首页 > 解决方案 > 将 X 列中具有相同值但 Y 列中具有不同值的行分组(不重复)

问题描述

我有一个数据集:

declare @table table(task int, type int, amount int)
insert into @table values
(1,23,100),
(1,23,100),
(1,23,100),
(1,23,100),
(1,23,100),
(1,24,100),
(1,23,100),
(2,25,101),
(2,25,102),
(2,25,103),
(2,25,104),
(2,25,105),
(2,25,106)

我想查找包含相同任务、类型值但其中不同值的行。我尝试执行以下操作:

select  task, count(task),count(task) from @table
group by task, type
having count(task)>1

但结果是:

task   count_task
1      6
2      6

这意味着我的查询接受了具有 100 个“金额”列的行(我需要具有不同“金额”的“任务”,不包括重复的“金额”)。

如何更改查询以使结果为:

task   count_task
2      6

标签: tsql

解决方案


您不是在不同计数amount大于 1 的行之后吗?

SELECT task,
       [type],
       COUNT(DISTINCT amount) AS Amounts
FROM @table
GROUP BY task,
         [type]
HAVING COUNT(DISTINCT amount) > 1;

推荐阅读