22,209
社区成员
发帖
与我相关
我的任务
分享
DECLARE @sql VARCHAR(MAX)
SET @sql = ';WITH ctea AS (
SELECT *,ROW_NUMBER()OVER(ORDER BY div) rn FROM dbo.c
),cteb AS (
SELECT ca.div,CASE WHEN cb.div IS NOT NULL THEN cb.div ELSE 1000000000 END AS bdiv FROM ctea ca LEFT JOIN ctea cb ON ca.rn+1 = cb.rn
),ctec AS (
SELECT t.*,cteb.* FROM d JOIN t ON t.sj = d.sj JOIN cteb ON t.num BETWEEN cteb.div AND cteb.bdiv
)
select sj'
;WITH ctea AS (
SELECT *,ROW_NUMBER()OVER(ORDER BY div) rn FROM dbo.c
),cteb AS (
SELECT ca.div,CASE WHEN cb.div IS NOT NULL THEN cb.div ELSE 1000000000 END AS bdiv FROM ctea ca LEFT JOIN ctea cb ON ca.rn+1 = cb.rn
),ctec AS (
SELECT t.*,cteb.* FROM d JOIN t ON t.sj = d.sj JOIN cteb ON t.num BETWEEN cteb.div AND cteb.bdiv
)
SELECT @sql = @sql + ',sum(case when num between ' + RTRIM(a.div)
+ ' and ' + RTRIM(a.bdiv)
+ ' then 1 else 0 end)[区间' + RTRIM(a.div)
+ '-' + RTRIM(a.bdiv)
+ ']'
FROM ( SELECT DISTINCT
ctec.div,ctec.bdiv
FROM ctec
) a
SET @sql = @sql
+ ' from ctec group by sj'
EXEC(@sql)
结果: