[英]Combine results of SQL Query
我已經完成了一些看似簡單的任務的調查,但是還沒有找到簡單的解決方案。 我想以最簡單的方式提出這個問題,以便其他人和我自己也可以從類似的情況中受益。 我遇到了一個需要重構的查詢,該查詢產生了一些奇怪的結果。
取得這些結果的最佳方法是什么:
ID Customer CustomerID (US) CustomerID (CA) CustomerID (EU)
-----------------------------------------------------------------------
1 XYZ XYZ - US NULL NULL
2 XYZ NULL XYZ - CA NULL
3 XYZ NULL NULL XYZ - EU
變成這個:
ID Customer CustomerID (US) CustomerID (CA) CustomerID (EU)
-----------------------------------------------------------------------
1 XYZ XYZ - US XYZ - CA XYZ - EU
如果有不止一種方法,那么遵循最新最佳實踐的最佳方法是什么?
這是一些當前產生第一個結果的示例代碼:
SELECT Header.ID,
Header.Customer,
CASE Detail.Location
WHEN 'US' THEN Detail.CustomerID
ELSE NULL
END AS [CustomerID (US)],
CASE Detail.Location
WHEN 'CA' THEN Detail.CustomerID
ELSE NULL
END AS [CustomerID (CA)],
CASE Detail.Location
WHEN 'EU' THEN Detail.CustomerID
ELSE NULL
END AS [CustomerID (EU)]
FROM dbo.Header AS Header
LEFT OUTER JOIN dbo.Detail AS Detail
ON Header.ID = Detail.HeaderID
非常感謝您的幫助!
您只需要聚合:
SELECT MIN(Header.ID) as ID, Header.Customer,
MAX(CASE Detail.Location WHEN 'US' THEN Detail.CustomerID
END) AS [CustomerID (US)],
MAX(CASE Detail.Location WHEN 'CA' THEN Detail.CustomerID
END) AS [CustomerID (CA)],
MAX(CASE Detail.Location WHEN 'EU' THEN Detail.CustomerID
END) AS [CustomerID (EU)]
FROM dbo.Header LEFT OUTER JOIN
dbo.Detail Detail
ON Header.ID = Detail.HeaderID
GROUP BYHeader.Customer
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.