0

私はこのシナリオを持っています

|---COL A ------------------COL B----|
|----001 ----------------------X-----|
|----001 ----------------------X-----|
|----002 ----------------------Y-----|
|----002 ----------------------Y-----|
|----003 ----------------------X-----|
|----003 ----------------------Y-----|
|----004 ----------------------X-----|
|----004 ----------------------Z-----|

でさまざまな値を持つレコードを取得したいcolB。その結果、列 b の値が異なる ID の結果が期待されます。

003
004

つまり、003 には x と Y があり、004 には x と Z があります。

私は試した:

select colA,count(*) from table group by colA,colB having count(*) >2;

同じ A と B を持つものをグループ化するため、正しく見えません

そのため、group by で col b を削除しましたが、同じ A を持つものをすべて取得し、B が等しいかどうかを無視します。正しい構文がわかりません。

4

2 に答える 2

0
SELECT colA 
FROM (
    SELECT colA, COUNT(DISTINCT colB) countB
    FROM tableGroup 
    GROUP BY colA
)
WHERE countB > 1
于 2013-02-22T00:08:51.777 に答える
0

これを試して:

select colA
from t
group by colA
having count(distinct colB) >= 2

キーはcount(distinct)です。

これのもう少し効率的な形式は次のとおりです。

having min(colB) <> max(colB)

ただし、これは2つを超える値に一般化されません。

于 2013-02-22T00:10:46.703 に答える