SQL 服务器 - 计算每个项目的日期并分组排列
SQL Server - Counting dates per item and arranging in groups
我有一个输出 ID 和日期的查询,例如:
[ID] [DateValue]
A111111 2015-01-01
A111111 2015-01-02
A111111 2015-01-03
A111111 2015-01-04
A222222 2015-01-01
A222222 2015-01-02
A333333 2015-01-01
A333333 2015-01-02
A333333 2015-01-03
从这个结果集中,我需要确定一个、两个和大于两个日期组来对每个 ID 的计数进行分组。例如,对于上面的数据,输出需要类似于以下内容:
[OneDay] [TwoDays] [MoreThanTwoDays]
3 3 2
我需要调整这个吗?
提前致谢!
CREATE TABLE #test
(
id VARCHAR(100) ,
[DateValue] DATE
);
INSERT INTO #test
VALUES
( 'A111111', '2015-01-01' ),
( 'A111111', '2015-01-02' ),
( 'A111111', '2015-01-03' ),
( 'A111111', '2015-01-04' ),
( 'A222222', '2015-01-01' ),
( 'A222222', '2015-01-02' ),
( 'A333333', '2015-01-01' ),
( 'A333333', '2015-01-02' ),
( 'A333333', '2015-01-03' );
SELECT
SUM(CASE WHEN qty = 1 THEN 1
ELSE 0
END) AS [OneDay] ,
SUM(CASE WHEN qty = 2 THEN 1
ELSE 0
END) AS [TwoDays] ,
SUM(CASE WHEN qty > 2 THEN 1
ELSE 0
END) AS [MoreThanTwoDays]
FROM
(
SELECT
COUNT(*) AS qty
FROM
#test
GROUP BY
[DateValue]
) a;
我有一个输出 ID 和日期的查询,例如:
[ID] [DateValue]
A111111 2015-01-01
A111111 2015-01-02
A111111 2015-01-03
A111111 2015-01-04
A222222 2015-01-01
A222222 2015-01-02
A333333 2015-01-01
A333333 2015-01-02
A333333 2015-01-03
从这个结果集中,我需要确定一个、两个和大于两个日期组来对每个 ID 的计数进行分组。例如,对于上面的数据,输出需要类似于以下内容:
[OneDay] [TwoDays] [MoreThanTwoDays]
3 3 2
我需要调整这个吗?
提前致谢!
CREATE TABLE #test
(
id VARCHAR(100) ,
[DateValue] DATE
);
INSERT INTO #test
VALUES
( 'A111111', '2015-01-01' ),
( 'A111111', '2015-01-02' ),
( 'A111111', '2015-01-03' ),
( 'A111111', '2015-01-04' ),
( 'A222222', '2015-01-01' ),
( 'A222222', '2015-01-02' ),
( 'A333333', '2015-01-01' ),
( 'A333333', '2015-01-02' ),
( 'A333333', '2015-01-03' );
SELECT
SUM(CASE WHEN qty = 1 THEN 1
ELSE 0
END) AS [OneDay] ,
SUM(CASE WHEN qty = 2 THEN 1
ELSE 0
END) AS [TwoDays] ,
SUM(CASE WHEN qty > 2 THEN 1
ELSE 0
END) AS [MoreThanTwoDays]
FROM
(
SELECT
COUNT(*) AS qty
FROM
#test
GROUP BY
[DateValue]
) a;