T-Sql
TSQL SELECT 語句列出基於欄位值計算的列
我有一個名為 Table1 的表,其中包含三個欄位 Project ID、EmployeeID、Starting Date。需要一個 select 語句來列出表的所有列,並需要一個附加列來顯示一年以來員工的項目數量。見下圖。
獲得起始日期 > 2016 年 1 月 1 日的計數(不同的 EmployeeID)就足夠了。但是,我無法弄清楚查詢。有人可以幫忙嗎?
如果項目 id 不同,這很容易通過兩個視窗函式來實現。也許不是最好的表現,但只是從我的手指中流出來。隨意改進:
配置
CREATE TABLE #Table1 ( ProjectID int, EmployeeID int, StartingDate DateTime ); INSERT INTO #Table1 (ProjectID, EmployeeID, StartingDate) VALUES (1, 1001, '1/1/2005'), (2, 1003, '1/1/2019'), (3, 1007, '1/1/2012'), (4, 1001, '1/1/2017'), (5, 1002, '1/1/2018'), (6, 1003, '1/1/2015'), (7, 1001, '1/1/2016'), (8, 1002, '1/1/2018'), (9, 1004, '1/1/2018'), (10, 10001, '1/1/2018');
查詢;
WITH cte_Count AS ( SELECT t.ProjectID, COUNT(*) OVER (PARTITION BY t.EmployeeID ORDER BY t.StartingDate) AS project_count FROM #Table1 t WHERE t.StartingDate > '1/1/2016' ) SELECT t.ProjectID, t.EmployeeID, t.StartingDate, MAX(project_count) OVER (PARTITION BY t.EmployeeID) AS project_count_since_2016 FROM #Table1 t LEFT JOIN cte_Count c ON c.ProjectID = t.ProjectID
第一部分只是過濾不在您想要的範圍內的項目。第二個將此資訊與源表連接起來。