我能够连接这两个表,并获得名为TextLine的字段。但是Textline对于一个键有多个值,想要将它们分组到每个键的一行中,我已经可以使用连接匹配这两个表。但我有多行由于文本行,想要有文本行成一个使用用于连接两个表的关键字多行
<pre>
SELECT TOP (100) PERCENT
dbo.POHeader.PoNo
, dbo.POHeader.ShipDate
, dbo.POHeader.Style, dbo.POHeader.StyleDesc
,dbo.POHeader.Quota,
(CONCAT(RTRIM(LTRIM(dbo.POHeader.QuotaName)),RTRIM(LTRIM(dbo.POHeader.QuotaName2)),RTRIM(LTRIM(dbo.POHeader.QuotaName3)),RTRIM(LTRIM(dbo.POHeader.QuotaName4)),RTRIM(LTRIM(dbo.POHeader.QuotaName5)),RTRIM(LTRIM(dbo.POHeader.QuotaName6)))) as QuotaName
, dbo.POHeader.VendorName
, dbo.POHeader.CountryofOrigin
, dbo.[PODetail-TotalPcs-TotalCost].TotalPcs
, dbo.POHeader.HTS
, dbo.poheader.DC
,dbo.POHeader.DeliveryDate
, dbo.[POText-T].TextLine
FROM dbo.POHeader INNER JOIN dbo.[PODetail-TotalPcs-TotalCost] ON dbo.POHeader.PoNo = dbo.[PODetail-TotalPcs-TotalCost].PoNo
LEFT JOIN dbo.[POText-T] ON dbo.POHeader.PoNo = dbo.[POText-T].PoNo
WHERE dbo.POHeader.DeliveryDate >= '11/01/19' AND dbo.POHeader.DeliveryDate <= '11/30/19' AND dbo.POHeader.DC IN ('W2WM','W2WJ')'</pre>
###Current table:###
#PoNO | SHIPDATE | TEXTLine#
##548756 | 3/4/2018 | BOYS##
##548756 | 3/4/2018 | SHOES##
#Required ans:#
##PoNO | SHIPDATE |TextLine##
##548756 |3/4/2018 | Boys Shoes##发布于 2019-10-18 07:27:41
如果要在sql server中查找列中的行,则有一种方法是使用XML。
WITH Current_table AS(
SELECT 548756 PoNO , CAST('3/4/2018' AS datetime) SHIPDATE ,'BOYS' TEXTLine union all
SELECT 548756 , CAST('3/4/2018' AS datetime),'SHOES' union all
SELECT 548756 , CAST('3/5/2018' AS datetime),'SHOES'
)
SELECT PoNO
,SHIPDATE
,STUFF((SELECT ' '+TEXTLine
FROM Current_table a
WHERE a.SHIPDATE=b.SHIPDATE
AND a.PoNO=b.PoNO FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,1,'') TEXTLine
FROM Current_table b
GROUP BY SHIPDATE,PoNO输出:
PoNO SHIPDATE TEXTLine
548756 2018-03-04 00:00:00.000 BOYS SHOES
548756 2018-03-05 00:00:00.000 SHOEShttps://stackoverflow.com/questions/58441284
复制相似问题