我试图找到具有相同数字但价值不同的行,我到达了这个查询:
DECLARE @Table1 AS TABLE (Number INT, Value int )
INSERT @Table1 VALUES (32, 3)
INSERT @Table1 VALUES (32, 5)
INSERT @Table1 VALUES (45, 5)
INSERT @Table1 VALUES (45, 5)
SELECT DISTINCT Number, COUNT(Value)
FROM @Table1 GROUP BY Number, Value
HAVING COUNT(Value) < 2
这是最好的方法吗?
答案 0 :(得分:1)
您的查询是否会返回预期结果?我通常看到它写得像这样:
SELECT Number, COUNT(DISTINCT Value)
FROM @Table1 GROUP BY Number
HAVING COUNT(DISTINCT Value) < 2
或者,根据您在下面的评论,您可以这样做:
SELECT Number
FROM @Table1 a
WHERE EXISTS(SELECT * FROM @Table1 b WHERE a.Number=b.Number and a.Value<>b.Value)
答案 1 :(得分:0)
SELECT Number, COUNT(distinct Value) as value
FROM @Table1 GROUP BY Number
答案 2 :(得分:0)
您可以使用加入。
对于加入:
SELECT t1.Number, t1.Value
FROM @Table1 t1
JOIN @Table1 t2
ON t2.Number = t1.Number
AND t2.Value <> t1.Value
这应该让你顺利。如果您希望有更多可呈现的最终结果集,可以将其用作子查询。