【发布时间】:2014-06-17 19:17:32
【问题描述】:
我遇到的问题是,我有一张表格,其中包含每天运送产品的多行。
如果产品在周一、周二和周四发布,则会有 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) = etc...
我在这里不知所措。
【问题讨论】: