我處於一種奇怪的狀態。它是從前端不允許用戶程序或udf /標量函數被調用的第三方應用程序。如何在逗號分隔列表中轉換列數據
唯一的選擇是編寫SQL,下面是我的數據外觀。 第一張圖有錯誤最後PID被假定爲1和倒數第二個2
我需要什麼要的就是這個,
這可以在這個Advantage數據庫服務器9中使用UDF /光標很容易完成,但我沒有選擇。我不知道這是否真的有可能。在Sybase中,存在一個名爲list的函數,它很容易完成這種工作,但在這裏不太確定。
應用程序確實允許調用內置函數。
我處於一種奇怪的狀態。它是從前端不允許用戶程序或udf /標量函數被調用的第三方應用程序。如何在逗號分隔列表中轉換列數據
唯一的選擇是編寫SQL,下面是我的數據外觀。 第一張圖有錯誤最後PID被假定爲1和倒數第二個2
我需要什麼要的就是這個,
這可以在這個Advantage數據庫服務器9中使用UDF /光標很容易完成,但我沒有選擇。我不知道這是否真的有可能。在Sybase中,存在一個名爲list的函數,它很容易完成這種工作,但在這裏不太確定。
應用程序確實允許調用內置函數。
我最終通過連接到數據字典創建下面的函數,但我得到了錯誤。
CREATE FUNCTION GetReport_Meds ( PID varchar(15) ) RETURNS String BEGIN DECLARE Meds String; DECLARE CurMeds cursor AS SELECT med_code from medication where patient = TRIM(PID) and end_date is null; Meds = ""; OPEN CurMeds; WHILE FETCH CurMeds DO Meds = TRIM(Meds)+TRIM(CurMeds.med_code)+","; END WHILE; CLOSE CurMeds; RETURN LEFT(Meds,LEN(Meds)-1); END;
poQuery: Error 7200: AQE Error: State = HY000; NativeError = 5054; [iAnywhere Solutions][Advantage SQL][ASA] Error 5054: The command cannot be completed with the current user permissions. Cannot create function object in the data dictionary.
我已要求誰創造了這個DB /應用在數據庫中添加此功能,這樣我就可以使用它的公司,讓我們看看在那裏我的土地。
declare @table table
(
PID integer,
Medicine varchar(10) )
insert into @table values (1, 'ABC')
insert into @table values (2, 'ABC')
insert into @table values (1, 'DEF')
insert into @table values (2, 'DEF')
insert into @table values (1, 'GHI')
SELECT DISTINCT a.PID,
Medicine = STUFF((SELECT ',' + b.Medicine
FROM @table b
WHERE a.PID = b.PID
FOR XML Path('')),1,1,'')
FROM @table a
結果:
**PID Medicine**
1 ABC,DEF,GHI
2 ABC,DEF
它有像GROUP_CONCAT一樣的東西嗎? – cha 2013-03-13 01:09:23
不是我知道,但我正在搜索文檔 – MStp 2013-03-13 01:12:10
如果沒有,請閱讀此討論。它可以幫助你實現一個等價物。 http://www.sqlservercentral.com/Forums/Topic984025-391-1.aspx – cha 2013-03-13 01:14:24