我遇到的问题是我的产品每天都有一个包含多行的表格。
如果产品在周一,周二和周四外出,则会有3行输入
ID rtedat
1 M
2 T
3 H
我正在尝试为每个产品返回一个字符串。
这是我正在使用的VIEW中的原始代码
SELECT TOP (1) rtedow
FROM dbo.CUSTROUTE AS i
WHERE (cusnum = dbo.CUSTOMER.cusnum) AND (co_num = dbo.CUST_CO.co_num) AND (rternk = '1')
ORDER BY credat, cusrtetky) AS main_rte_days
问题是最重要的(1)。视图中的逻辑并未面向多天。
我需要更改它以产生一个看起来像M,T,H的单个字符串
我试过的这段代码正在运行,但我遇到的问题是我曾尝试将其插入到视图中,它返回了' ='第一次选择后无效。不知道那里发生了什么。
DECLARE @combinedString VARCHAR(MAX)
SELECT @combinedString = COALESCE(@combinedString + ', ', '') + rtedow
FROM dbo.CUSTROUTE
WHERE (cusnum = dbo.CUSTOMER.cusnum) AND (co_num = dbo.CUST_CO.co_num) AND (rternk = '1')
SELECT @combinedString as rtedow
然后我尝试了另一种建议使用XML的方法
SELECT DISTINCT rtedow
FROM dbo.CUSTROUTE v1
CROSS APPLY ( SELECT rtedow + ','
FROM dbo.CUSTROUTE v2
WHERE (v2.cusnum = dbo.Customer.cusnum) = (v1.cusnum = dbo.Customer.cusnum)
AND (v2.co_num = dbo.CUST_CO.co_num) = (v1.co_num = dbo.CUST_CO.co_num)
AND (rternk = '1')
ORDER BY ID
FOR XML PATH('') ) D ( rtedow )
WHERE (cusnum = dbo.CUSTOMER.cusnum) AND (co_num = dbo.CUST_CO.co_num) AND (rternk = '1')
但我相信那里的问题是内部WHERE(v2.cusnum = dbo.Customer.cusnum)=等......
我在这里输了。
答案 0 :(得分:0)
我是一个ms SQL人员,要实现这一点,我会使用一个执行此处理的函数,然后获取该函数以将字符串返回给视图。
我通常会将临时表声明为变量,然后使用所需的记录加载它,然后使用while循环将数据加载到字符串中,并将其作为最终值返回。
如果你能给我表格结构,我可能会为你敲一些示例代码。