私はこれを得るための最善の方法を巡って頭を抱えようとしています。SQLクエリ:複数の列で同じレコードを数えますが、別の列がDistinctである場合
私はテーブルを持っています。ここには単純化バージョンがあり、無駄なアイテムはありません。 - カウントする - 私が用意してどのように多くの異なる種類の信号Iが知りたい
表のICD
Pin |Direction | Type | Specifics | Channel
1 | output | digital | open/gnd | 1
2 | output | digital | open/gnd | 2
3 | output | digital | open/gnd | 3
4 | output | digital | open/gnd | 4
5 | output | power | open/gnd | 5
6 | output | power | open/gnd | 5
7 | input | digital | gnd | null
8 | input | digital | gnd | null
9 | input | digital | gnd | null
10 | input | digital | gnd | null
11 | output | digital | open/28 | 6
12 | output | digital | open/28 | 7
:貧しい書式設定を言い訳してください。この私は次のクエリで行ったクエリの結果は
SELECT Direction, Type, Specifics, Channel, COUNT(*) AS CountOf
FROM ICDs
GROUP BY Direction, Type, Specifics, Channel
HAVING COUNT(*) > 0
:
Direction | Type | Specifics | CountOf
output | digital | open/gnd | 4
output | power | open/gnd | **2**
input | digital | gnd | 4
output | digital | open/28 | 2
この結果の唯一の問題は、電力出力がために(ハイパワーによる)2本のピンを使用することです同じチャネル、実際には、出力電力ラインは、私はサブクエリをやってみました代わりに、2
output | power | open/gnd | **1**
のcountOf 1を、持っていると方向、タイプ、細目とチャンネルを前にグループ化されているすべての行を抽出する必要がありますので、上記のクエリを実行しますが、これは原因となったチャネル番号がない私のgnd入力のカウントを混乱させます。
希望の結果を得るために調整する方法はありますか?私は、重複したチャンネルの行を削除することができなければならないと思いますが、channel = nullの場所ではなく、その数を行います。私はちょうどそれを行う方法を把握することはできません。
注意:テーブルははるかに大きく、クエリはより複雑ですが、これは私の問題がある場所です。また、コーディングはC#VS2017で重要です。
ご協力いただきありがとうございます。
互換性のないデータベースタグを削除しました。実際に使用しているデータベースのみにタグを付けます。 –
電源の出力に2つのピンがあることを知るための情報は何ですか?したがって、カウントは2ではなく1でなければなりません。 –
それでは、あなたの望む結果は何ですか@Razvan –