【发布时间】:2021-03-24 15:12:38
【问题描述】:
我有一张桌子:
| VALA | VALB | DATE | POST | VALC |
|---|---|---|---|---|
| A | C | April 1, 2021 | 10001 | D |
| B | A | April 1, 2021 | 10001 | A |
| A | A | March 1, 2021 | 10001 | A |
| A | A | March 1, 2021 | 10001 | B |
| A | B | March 1, 2021 | 10001 | A |
| A | C | March 1, 2021 | 10001 | D |
| B | A | March 1, 2021 | 10001 | A |
| A | A | April 1, 2021 | 10002 | A |
| A | A | April 1, 2021 | 10002 | A |
| A | C | April 1, 2021 | 10002 | D |
| B | A | April 1, 2021 | 10002 | A |
| A | A | March 1, 2021 | 10002 | A |
| A | A | March 1, 2021 | 10002 | A |
| A | A | March 1, 2021 | 10002 | A |
| A | A | March 1, 2021 | 10002 | A |
| A | C | March 1, 2021 | 10002 | D |
| B | A | March 1, 2021 | 10002 | A |
我需要以下格式的结果集:
| POST | DATE | COUNT |
|---|---|---|
| 10001 | March 1, 2021 | 5 |
| 10001 | April 1, 2021 | 2 |
| 10002 | March 1, 2021 | 3 |
| 10002 | April 1, 2021 | 3 |
我尝试过的:
SELECT [POST]
,[DATE]
,COUNT(*) OVER(PARTITION BY [POST]) AS [COUNT]
FROM [TABLE]
GROUP BY [POST], [DATE]
这个问题: 获取VALA、VALB、VALC 字段的唯一组合的COUNT 的逻辑缺失。分组好像没问题,就是不知道怎么继续。
给你的虚拟数据:
CREATE TABLE [TABLE] (
[VALA] varchar(255),
[VALB] varchar(255),
[DATE] varchar(255),
[POST] varchar(255),
[VALC] varchar(255),
);
INSERT INTO [TABLE]
VALUES
('A', 'A', 'March 1, 2021', 10001, 'A'),
('A', 'A', 'March 1, 2021', 10001, 'B'),
('A', 'B', 'March 1, 2021', 10001, 'A'),
('B', 'A', 'March 1, 2021', 10001, 'A'),
('A', 'C', 'March 1, 2021', 10001, 'D'),
('B', 'A', 'April 1, 2021', 10001, 'A'),
('A', 'C', 'April 1, 2021', 10001, 'D'),
('A', 'A', 'March 1, 2021', 10002, 'A'),
('A', 'A', 'March 1, 2021', 10002, 'A'),
('B', 'A', 'March 1, 2021', 10002, 'A'),
('A', 'C', 'March 1, 2021', 10002, 'D'),
('A', 'A', 'March 1, 2021', 10002, 'A'),
('A', 'A', 'March 1, 2021', 10002, 'A'),
('A', 'A', 'April 1, 2021', 10002, 'A'),
('B', 'A', 'April 1, 2021', 10002, 'A'),
('A', 'C', 'April 1, 2021', 10002, 'D'),
('A', 'A', 'April 1, 2021', 10002, 'A');
SELECT * FROM [TABLE]
谢谢。
【问题讨论】:
-
附注:请避免将日期存储为文本,因为它不会正确排序。请改用实际的日期列。
标签: sql sql-server tsql