我正在运行一个简单的连接查询,如下所示
Select T.tno,P.GMass,t.TicketNo,t.SchedID,t.Compound from TicketBatch
T join PalletWeight P on T.tno=P.Tno where isProcesed = 0 and P.TNo
=(select MAX(tno) from PalletWeight)
结果查询
我希望有一个更加概括的结果,它会给出tno,gmass,schedID和compound的一个字段(这将始终相同).TicketNo必须合并。
即
tno,Gmass,TicketNo,SchedID,Compound
(250),(200.00),(105132,105133,105134),41729,Null
任何帮助将不胜感激
答案 0 :(得分:0)
您可以使用FOR XML PATH
来完成此操作 - 可能不是最优雅的方式,但它应该有效:
SELECT
tno
, GMass
, '(' + LEFT(tickets, LEN(tickets)-1) + ')' AS TicketNo
, SchedId
, Compound
FROM (
SELECT DISTINCT
T.tno
, P.GMass
, ( SELECT TicketNo + ','
FROM TicketBatch T2
WHERE T.tno = T2.tno
FOR XML PATH('') ) AS tickets
, T.SchedId
, T.Compound
FROM TicketBatch T
JOIN PalletWeight P
ON T.tno = P.tno
) X
您基本上使用XML PATH创建一个包含最内层查询的AAA,BBB,CCC,
字符串,并将其选为字段,然后使用外部查询添加括号并删除尾随逗号。您可以使用WHERE T.tno = T2.tno
获取正确的故障单列表。我假设tno
是基于您的查询的主键,并用它来提取正确的票证列表。