是否可以使用延遲和從另一個表作爲範圍來選擇和彙總項目,如下所示。SQL選擇LAG和LEAD之間的項作爲範圍
SELECT @Last = MAX(ID) from [dbo].[#Temp]
select opl.Name as [Age Categories] ,
(SELECT count([dbo].udfCalculateAge([BirthDate],GETDATE()))
FROM [dbo].[tblEmployeeDetail] ed
inner join [dbo].[tblEmployee] e
on ed.EmployeeID = e.ID
where convert(int,[dbo].udfCalculateAge(e.[BirthDate],GETDATE()))
between LAG(opl.Name) OVER (ORDER BY opl.id)
and (CASE opl.ID WHEN @Last THEN '100' ELSE opl.Name End)
) as Total
FROM [dbo].[#Temp] opl
tblEmployee包含僱員和他們的出生日期
INSERT INTO @tblEmployees VALUES
(1, 'A', 'A1', 'A', '1983/01/02'),
(2, 'B', 'B1', 'BC', '1982/01/02'),
(3, 'C', 'C1', 'JR2', '1982/10/11'),
(4, 'V', 'V1', 'G', '1990/07/12'),
(5, 'VV', 'VV1', 'J', '1992/06/02'),
(6, 'R', 'A', 'D', '1982/05/15'),
(7, 'C', 'Ma', 'C', '1984/09/29')
下一頁表被創建取決於年齡臨時表由用戶例如輸入「20; 30; 50; 60」,生成下面一個臨時表,使用funtion分裂
select * FROM [dbo].[Split](';','20;30;50;60')
臨時表
pn s
1 20
2 30
3 50
4 60
所需的輸出如下,但列年齡類別可以在C#中的數據表中重命名。我需要總量欄在範圍上準確。
Age Categories Total
up to 20 0
21 - 30 2
31 - 50 5
51 - 60 0
請出示您的樣本數據和預期的結果,所以我們可以評估你的問題 –
希望它現在有點清晰。 – Prince