【发布时间】:2021-11-23 23:30:18
【问题描述】:
假设这个table
我想获取所有CODEs,其中SIZEPOS 多次具有相同的值...
对于产品来说
('194342-01', 10510, 5),
('194342-01', 10510, 7),
('194342-01', 10510, 9),
('194342-01', 10510, 11),
('194342-01', 10510, 13),
('194342-01', 10510, 15),
('194342-01', 10510, 5),
('194342-01', 10510, 19),
我想得到'194342-01', 10510, 5,因为SIZEPOS 5 出现了两次。我通过以下查询实现了它
SELECT CODE, ITEID, COUNT(SIZEPOS) AS CNT
FROM @SUBSTITUTE
GROUP BY CODE, ITEID, SIZEPOS
HAVING COUNT(SIZEPOS) > 1;
但由于某种原因,一些返回的行出现了两次,甚至三次......我在这里错过了什么?
【问题讨论】:
-
您没有返回任何重复的行 - 您只是没有在结果集中显示
SIZEPOS列,但您明确表示要保持不同的SIZEPOS值。将其添加到您的结果集中,您会发现每一行都是独一无二的。考虑到您按每一列分组,这有点明显。也许您需要从分组依据中删除一列?或者也许结果是完美的。 -
是的,我后来发现,有些行有多个值的重复值......因此,每次出现多次的任何不同值都会显示它们......在那种情况下当然,我的查询中需要 DISTINCT,这就是我最终要做的!感谢 @DaleK 同时提供的帮助和友善!
-
发布并自我接受您的答案,以避免其他人(例如我)花时间在上面。
-
你是对的,对不起!我可以在 20 小时内接受我自己的答案,因为系统已通知我!
标签: sql sql-server tsql group-by count