这是我的表格,我希望以一行格式添加值,我的代码是
OrderDate OrderID ItemNo PaymentType Cash Nets Visa AMEX MasterCard Voucher Remarks ReciptNo
2018-01-27 809 40149 Mix Payment Type NULL NULL NULL NULL NULL 55.00 NULL NULL
2018-01-27 809 40149 Mix Payment Type NULL NULL NULL NULL 10.00 NULL NULL ABC123
2018-01-27 809 40149 Mix Payment Type NULL NULL NULL 4.00 NULL NULL NULL PQE789
2018-01-27 809 40149 Mix Payment Type NULL NULL 10.00 NULL NULL NULL NULL 123456
2018-01-27 809 40149 Mix Payment Type 20.00 NULL NULL NULL NULL NULL NULL NULL
我想要o / p喜欢
OrderDate OrderID ItemNo PaymentType Cash Nets Visa AMEX MasterCard Voucher Remarks ReciptNo
2018-01-27 809 40149 Mix Payment Type 20.00 NULL 10.00 4.00 10.00 55.00 NULL ABC123,PQR789,123456
我应该在sql查询中做些什么
答案 0 :(得分:3)
尝试这样的事情:
SELECT OrderDate,
OrderID,
ItemNo,
PaymentType,
MAX(Cash),
MAX(Nets),
MAX(Visa),
MAX(AMEX),
MAX(MasterCard),
MAX(Voucher),
MAX(Remarks),
STUFF((
SELECT ', ' + ISNULL(R2.ReciptNo,'')
FROM TableName t2
WHERE t1.OrderID= t2.OrderID
FOR XML PATH ('')), 1, 2, '') AS ReciptNos
FROM TableName t1
GROUP BY OrderDate,OrderID,ItemNo,PaymentType
答案 1 :(得分:1)
由于您只想要一个具有相同值的列,您可以按方法使用组:
SELECT
OrderDate, OrderID, ItemNo, PaymentType,
MAX(cash), MAX(nets), MAX(Visa), MAX(AMEX), MAX(MasterCard), MAX(Voucher),
STRING_AGG(Remarks, ', '), STRING_AGG(ReciptNo, ', ')
FROM myTable
GROUP BY OrderDate, OrderID, ItemNo, PaymentType
这显然只有在没有两行都有例如Cash条目时才有效。
PS:玩SQLFiddle来玩。
答案 2 :(得分:0)
你可以尝试