我想解決如何處理將一些數據聚合在一起的SQL查詢。這是我的樣本數據集。根據一些規則從一行中獲取值
SITE STATUS VENDOR
1234 Rejected Joe
1234 Rejected John
1234 Approved Jane
1234 Rejected Jeb
5644 Rejected Joe
5644 Rejected John
5644 In Process Jane
8877 Rejected Joe
8877 Rejected John
我想得出的數據集看起來像下面
1234 Approved Jane
5644 In Process Jane
8877 Rejected
可以有之間的任何1首10個紀錄爲同一站點。狀態有一個層次結構。例如,如果網站上的任何狀態均爲「已批准」,則所有其他狀態均無關緊要。
我的確意識到這是一個類似的問題,與以前一些其他問題一樣。這是我的第一篇文章。如果你發現另一篇似乎與我正在尋找的帖子一樣可以隨意分享。
下面是該查詢的一個例子,我曾寫過:
SELECT DISTINCT [SITE]
,(SELECT
CASE
WHEN MIN(Status) = 'Completed' THEN 'Completed'
WHEN MIN(Status) = 'In Process' THEN 'Shopping'
WHEN MIN(Status) = 'Rejected' THEN 'Rejected'
WHEN MIN(Status) = 'Withdrawn' THEN 'Withdrawn'
WHEN MIN(Status) = 'Hold' THEN 'Hold'
ELSE 'No Status'
END AS status
FROM [dbo].[test] subtest
WHERE test.SITE = subtest.SITE AND subtest.OverallStatus = 'A' GROUP BY site) AS test_status
,Vendor
FROM [dbo].[test] test
WHERE OverallStatus = 'A'
ORDER BY SITE
對不起,從我的環境中編輯我的代碼,並可能錯過了一些變化。 OverallStatus是表中未顯示的值。
看着這個...一個case語句來定義狀態的順序,那麼你可以通過 – maSTAShuFu
排序是這個mssql 2008r2或更高版本? – maSTAShuFu
請在sqlfiddle http://sqlfiddle.com/#!6/9eecb7/5720找到解決方案 – maSTAShuFu