2016-05-19 5 views
-1

はじめに完全なSQLのnoobです。私を助けてくれました。あなたの時間に感謝します。複数の変数を複数の列で検索し、変数名で分割する

私は、その中に列挙されている人に起こったイベントをコード化した列をいくつか持っています。そして、私はコード(例えばA106またはB465)でイベントが発生した回数をカウントするために、それがどの列であっても検索したいと思います。したがって、すべてのイベント列を基本的に検索し、何回何回カウントするか4異なるイベントが発生し、結果はイベントコードで分割されます。私は(または右であってもなくてもよい)これまでのところ、私の構造として持っていることは次のとおりです。

SELECT COUNT() 
FROM EVENTSLOG 
WHERE EVENT1 IN ('A106', 'A107', 'B465', 'E713') OR 
EVENT2 IN ('A106', 'A107', 'B465', 'E713') OR 
EVENT3 IN ('A106', 'A107', 'B465', 'E713') OR 
EVENT4 IN ('A106', 'A107', 'B465', 'E713') 
GROUP BY 

私は、これはあまりないです知っているが、私はUNIONにしようなど、私が書いた約100他のスニペットを、持っていますすべての列(関連するプライマリキーを保持することについて混同しています)は、最後にイベントコードで分割する方法に悩まされるたびに発生します。

感謝:)

アップデート:私は何のために望んでいることは

Event Code Number of Events 
=========== ================= 
A106   554 
A107   4233 
B465   4196 
E713   34 

ような何かを得ることです

(私は以下の提案のコードを実行していますが、それは巨大なデータセットであります私は実際に7つのコードのための24の列を探しています、そして、これまでのところ、私のクエリは非常に長い間実行されていました) - そして、まだ出力はありませんでした。オーケー

第二編集

は、ちょうど戻って、以下の提案の答え..からのクエリ結果を持っていたと私は戻って私が探しているテーブルのアウトラインを得たが、それだけですべてのコードのための1の数を与えているとき、Iそれ以上のことは分かっていますか?例えば、 。

CODE CNT 
==== ==== 
A105 1 
A106 1 
B465 1 
E713 1 
F432 1 
F465 1 
K364 1 
+0

は、あなたはそれに基づいていくつかのサンプル・スキーマと予想される出力を投稿してもらえますか? – TheGameiswar

+0

ここでは、ヘルプをすばやく入手する方法もご覧ください。https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar

+0

助けてくださいhttp://www.sommarskog.se/arrays-in-sql-2005.html#CSV –

答えて

0

ただ、すべての4列の組合でください:

select code, count(*) as cnt 
from(
    select event1 as code from log 
    union all 
    select event2 as code from log 
    union all 
    select event3 as code from log 
    union all 
    select event4 as code from log 
    )t 
where code in('A106', 'A107', 'B465', 'E713') 
group by code 
+0

こんにちは、私はこれを試しましたが、それは私がそこに知っているとき、それぞれのイベントコードのための1のカウントを表示していますこのコードが現れた回数が増えています。またサイドの質問、なぜ括弧の後に 't'が必要ですか? – Kirsty

+0

構文で必要です。サブクエリの別名を付ける必要があります。このselectステートメントは機能するはずです。おそらく、あなたは何か間違っているでしょう。 –

関連する問題