1

我的情况有点奇怪。它是一个第三方应用程序,从前端不允许调用用户过程或 udf/标量函数。

唯一的选择是编写 SQL,下面是我的数据的外观。第一张图片有一个错误,最后一个 PID 应该是 1,倒数第二个是 2。

在此处输入图像描述

我需要的是这个,

在此处输入图像描述

这可以在 Advantage Database Server 9 中使用 UDF/游标轻松完成,但我别无选择。我不知道这是否真的可能。在 Sybase 中有一个名为 list 的函数,它可以很容易地完成这种工作,但在这里不确定。

应用程序确实允许调用内置函数。

4

2 回答 2

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
于 2013-03-13T09:55:27.203 回答
0

我最终通过连接到数据字典创建了以下函数,但我得到了错误。

创建函数 GetReport_Meds
   (
   PID varchar(15)
   )
   返回字符串
开始
声明药物字符串;
DECLARE CurMeds 光标 AS SELECT med_code from drug where patient =
TRIM(PID) 和 end_date 为空;
药物 = "";
打开 CurMeds;
同时获取 CurMeds 做
药物 = TRIM(Meds)+TRIM(CurMeds.med_code)+",";
结束;
关闭 CurMeds;
返回左(Meds,LEN(Meds)-1);
结尾;
poQuery:错误 7200:AQE 错误:状态 = HY000;本机错误 = 5054;
  [iAnywhere 解决方案][Adv​​antage SQL][ASA] 错误 5054:命令不能
 以当前用户权限完成。不能
在数据字典中创建函数对象。

我已要求创建此数据库/应用程序的公司在数据库中添加此功能,以便我可以使用它,让我们看看我在哪里登陆。

于 2013-03-13T20:39:54.553 回答