理想情況下,由于客戶的限制,我想要符合 SQL2008 的答案
我需要一個不同的專案串列,但如果原始資料首先只有一個專案,則回傳特定資料的列......
示例資料...
Id Code
1 A
2 A
3 B
在上面的示例資料中,我想回傳一個不同的串列Code
,但如果只存在該代碼的一個實體,我希望Id
回傳(否則null
)
預期輸出...
Code Id
A null
B 3
我有以下內容,但感覺應該有一種更簡單的方法,也許使用GROUP BY
...
; WITH Data AS (
SELECT Code, Id ROW_NUMBER() OVER (PARTITION BY Code ORDER BY Id) AS RowNum
FROM MyTable
)
SELECT D1.Code, CASE (SELECT COUNT(*) FROM Data D2 WHERE D2.Code = D1.Code) WHEN 1 THEN D1.Id ELSE NULL END
FROM Data D1
WHERE D1.RowNum = 1
這可以以更好的方式完成嗎?
uj5u.com熱心網友回復:
這里想到了聚合:
SELECT Code, CASE WHEN COUNT(*) = 1 THEN MAX(Id) END AS Id
FROM MyTable
GROUP BY Code;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/469997.html
標籤:sql服务器 tsql sql-server-2008
上一篇:IIS方式部署專案發布上線