我有点奇怪的情况。它是第三方应用程序,它从前端不允许调用用户过程或udf /标量函数。
唯一的选择是编写SQL,下面是我的数据的外观。 第一张图片有一个错误,最后一个PID假定为1,倒数第二。
我需要的是这个,
这可以使用此Advantage Database Server 9中的UDF /游标轻松完成,但我没有选择。我不知道是否真的有可能。在Sybase中,存在一个名为list的函数,它可以很容易地完成这种工作,但在这里并不确定。
应用程序允许调用内置函数。
答案 0 :(得分:1)
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
答案 1 :(得分:0)
我最终通过连接到数据字典来创建以下功能,但是我收到了错误。
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 / app的公司在db中添加此功能,以便我可以使用它,让我们看看我的位置。