tsql - 将 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
解决方案
您不是在不同计数amount
大于 1 的行之后吗?
SELECT task,
[type],
COUNT(DISTINCT amount) AS Amounts
FROM @table
GROUP BY task,
[type]
HAVING COUNT(DISTINCT amount) > 1;
推荐阅读
- java - lombok 或 java 'var' 有用的用例
- javascript - 如何在完整日历中按住 Popover 框直到鼠标移开它?
- python - 使用组约束将列值向左移动
- oracle - 如何将游标的 SELECT 查询转换为在 PL/SQL 存储过程中完全运行?
- windows-ce - 如何从主机应用程序向 Zebra Omnii XT15 扫描仪发出哔声?
- react-native - 打印功能在 ios 的 react-native webview 中不起作用
- jenkins - 使用 Jenkins 阅读 TFS 签入评论
- sql - 应该允许 NULL 的 FOREIGN KEY 约束
- c# - Azure 表存储多次调用失败
- css - Libsass&Dart-sass 对 CSS 选择器的链接给出不同的结果