首先是pb和sql server 2000.
如下表
卡號 類別 專案名 姓名
1 檢查 檢查1 張三
1 檢查 檢查2 張三
1 檢查 檢查3 張三
2 檢查 化驗1 李四
2 檢查 化驗2 李四
檢索時希望的結果是
卡號 類別 專案名 姓名
1 檢查 檢查1,檢查2,檢查2 張三
2 檢查 化驗1,化驗2 李四
有哪位高人指點下.
uj5u.com熱心網友回復:
檢索時希望的結果是卡號 類別 專案名 姓名
1 檢查 檢查1,檢查2,檢查3 張三
2 檢查 化驗1,化驗2 李四
打字快了把檢查3寫成了2.
uj5u.com熱心網友回復:
你用游標將記錄一行行讀出來進行字串相加就行了uj5u.com熱心網友回復:
這個方法不大合適,需要放在一張中間表中,本來想使用函式
create function fmerg(@id varchar(100))
returns varchar(1000)
as
begin
declare @str varchar(1000)
set @str=''
select @str=@str+','+zm from a where xm=@id
set @str=right(@str,len(@str)-1)
return(@str)
End
這樣就可以直接select distinct id,fmerg(id) from a
但是:
在sql2000,兼容級別為65 下,提示報錯:
必須宣告變數'@id'
在此背景關系中不能使用帶有回傳值的return陳述句
在最前面加declare @id varchar(100)也不行
但是把sql2000的兼容級別調到80就不報錯,可以呼叫
問題是我們的資料庫是從65下升級過來的,兼容級別必須為65
請問有什么解決辦法沒?
謝謝
uj5u.com熱心網友回復:
這個函式可以達到效果嗎?我對sql2000里的函式不懂,可看上去好象不能達到目的吧uj5u.com熱心網友回復:
可以達到,就是必須在兼容級別為80的sql2000 下才可以建立該函式。uj5u.com熱心網友回復:
在SQL SERVER 2000中,把兼容級別改為80uj5u.com熱心網友回復:
一條SQL陳述句無法解決,肯定要逐行讀出然后拼接起來的若想在資料庫后臺處理,就寫個存盤程序
若想在資料庫前端處理,就在腳本里用回圈來賦值。一般不要用計算列里參考函式下處理,這樣操作,會使得每次資料視窗的滾動條有拖動時,都會執行一次函式,資料里大時,感覺到慢,還不如直接在腳本里賦值。
因為賦值需要dw的語法有一個欄位,所以,你可以在dw的定義中,加入一個select的字值如下:
select convert(varchar(100),'') as '專案名',
...
此時,dw就會有個長度為100的專案名來給你操作了。
uj5u.com熱心網友回復:
等待牛人來答.uj5u.com熱心網友回復:
接分是王道!轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/113649.html
標籤:數據庫相關
上一篇:急等 ,sql 查詢統計,急急
