2つの列に基づいてテーブルでSQL selectを実行しようとしていますが、通常の方法で両方の列の値の組み合わせが一意でなければなりません。値がどこの列に1回しか表示されないかを選択したい。 は、データセットを考える:列の組み合わせでSQL distinct/groupby
|pkid | fkself | otherData |
|-----+--------+-----------|
| 1 | 4 | there |
| 4 | 1 | will |
| 3 | 6 | be |
| 2 | 5 | other |
| 5 | 2 | data |
| 6 | 3 | columns |
私はこれを行うには、私は考えることができる唯一の方法は、順番に`pkid
とfkid
を連結することである
|pkid | fkself | otherData |
|-----+--------+-----------|
| 1 | 4 | there |
| 3 | 6 | be |
| 2 | 5 | other |
または
|pkid | fkself | otherData |
|-----+--------+-----------|
| 4 | 1 | will |
| 5 | 2 | data |
| 6 | 3 | columns |
のいずれかを返す必要がありますその結果、行1と行2の両方が1,4
に連結されるようになりましたが、どうすればよいかわかりません。ル。
行には他のデータ列がありますが、値はpkid
またはfkself
のいずれであるかにかかわらず、それぞれのIDは1回だけ取得されます。
を、私は行うことができませんでした: は PKID、 fkself、 を選択 YourTable Tからランク としてOtherDataの、 DENSE_RANK()オーバー(PKIDによってパーティション少なくともによって(PKID、fkself)、最大(PKID、fkself)順)) ランク= 1 それは私に余分な列を与えるが、それは使用すると無視することができます。私は、Oracle DB – AsherMaximum
の中のビューのためにこのステートメントを作成しています。これはうまくいくようです。今度は残りのクエリを追加するだけです! – AsherMaximum
同じレベルのwhere句でランクを使用できないため、副選択が必要です。 – GolezTrol