【发布时间】:2018-07-11 12:47:08
【问题描述】:
我有一个包含以下数据的表格:
CREATE TABLE [dbo].[Products](
[ProductNR] [varchar](14) NULL,
[Location] [int] NULL,
[Date] [datetime] NULL
);
INSERT INTO Products (ProductNR, Location, Date)
VALUES
('1234' ,1, '2016-01-17 12:30:50.010'),
('4567' ,1, '2016-03-17 12:30:50.010'),
('8978' ,1, '2016-04-17 12:30:50.010'),
('2578' ,1, '2016-05-17 12:30:50.010'),
('1234' ,2, '2016-06-17 12:30:50.010'),
('1234' ,3, '2016-07-17 12:30:50.010');
select count (distinct ProductNR)
from Products
结果:
|Count|
| 4 |
但是当我像下面这样使用 GROUP BY 语句时:
select count (distinct ProductNR) AS Count
from Products
group by MONTH(date)
结果:
|Count|
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
总共 6,但我想在整个表/GROUP BY 语句中检索一次 ID,这意味着我只希望返回第一个注册日期的 4 行每个 ID 都被计算在内。
期望的结果,其中 ProductNR 1234 仅检索一次:
|Count|
| 1 |
| 1 |
| 1 |
| 1 |
【问题讨论】:
-
它给了我同样的结果
-
第二个查询统计每组中不同值的个数,也就是说
GROUP BY的优先级高于COUNT()中的DISTINCT关键字.您能解释一下业务需求吗?
标签: sql-server group-by distinct