表结构:
Col1 col2 col3 col4
1 ABC q 03-11-2018
2 ABC q 03-11-2018
3 ABC q 03-11-2018
4 PBC q 03-11-2018
5 ABC q 04-11-2018
6 ABC q 04-11-2018
7 ABC q 05-11-2018
预期的O / P: 通过以下公式计算百分比 count(col2),其中col = ABC和总行数
假设用户输入日期为2018年11月11日至2018年11月11日,则输出应为
col1 col2 col3
3 3 100%
2 2 100%
1 1 100%
答案 0 :(得分:0)
您可以尝试以下操作。
DECLARE @StartDate DATE='03-11-2018'
DECLARE @EndDate DATE = '05-11-2018';
;WITH cte AS
(SELECT Count(*) col1,
col4
FROM temp_table
WHERE col2 = 'ABC'
GROUP BY col4)
SELECT col1,
col2,
Str(col1 * 100.0/col2, 12, 2) + '%' AS Col3
FROM cte c
CROSS apply (SELECT Count(*) col2
FROM temp_table T
WHERE C.col4 = T.col4)TOT
WHERE C.col4 BETWEEN @StartDate AND @EndDate
注意:用实际的表名替换TEMP_TABLE
。