我想选择一些精确列具有不同值的行,而另一个精确列具有相同的值。
例如:
COLUMN_A | COLUMN_B
__________|___________
|
1 | 2002
1 | 2002
2 | 2001
2 | 2007
3 | 2010
3 | 2010
现在,假设我想知道哪些行具有相同的A但不同的B,查询将返回行
2 | 2001
2 | 2007
或只是
2
只要我知道它是哪一个......
答案 0 :(得分:3)
您可以使用:
SoundManager
另一种方法是使用SELECT COLUMN_A
FROM dbo.YourTable
GROUP BY COLUMN_A
HAVING MIN(COLUMN_B) <> MAX(COLUMN_B);
:
EXISTS
答案 1 :(得分:3)
Count(不同 ColumnName )就是这种情况。它确保仅考虑唯一值。
With Src As (
Select *
From (Values
(1, 2002),
(1, 2002),
(2, 2001),
(2, 2007),
(3, 2010),
(3, 2010)
) V (COLUMN_A, COLUMN_B)
)
Select *
From Src
Where COLUMN_A In (
Select COLUMN_A
From Src
Group By COLUMN_A
Having Count(Distinct COLUMN_B) > 1 --<- "More than one unique value" condition
)
COLUMN_A COLUMN_B
2 2001
2 2007
答案 2 :(得分:2)
这个没有GROUPing:
SELECT x.column_a, x.column_b, y.column_b
FROM table_name x
JOIN table_name y
ON ( x.column_a = y.column_a AND x.column_b <> y.column_b )
您只需将表格加入到自身,并提供您正在寻找的条件。