0
我遇到的问题是,我有一个表格,每天都有一个产品正在发货。将SELECT DISTINCT结果封装在VIEW中。
如果产品走出去,周一,周二,周四会有导致
ID rtedat
1 M
2 T
3 H
我试图返回每个产品一个字符串3个条目。
这是从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)=等等......
我在这里输了。