2012-02-15 10 views
0

私のテーブルの構造は、この私は行数が欲しい条項

id last_mod_dt  nr  is_u  is_rog  is_ror is_unv 
1  x   uuid1 1   1   1   0 
2  y   uuid1 1   0   1   1 
3  z   uuid2 1   1   1   1 

ある複数持つテーブルから値の明確な数を取得して:

  1. is_ror=1 or is_rog =1
  2. is_u=1
  3. is_unv=1

すべてが1つのクエリで表示されます。出来ますか?

私が直面している問題は、上記の表の場合と同じnrの値が存在する可能性があることです。

+1

取得したい結果を投稿できますか? –

+0

どのデータベースをお使いですか? mysql?オラクル?コメントを投稿するか質問を編集するか、該当するタグを追加してください – Bohemian

答えて

0

「すべての単一のクエリですべて」が副選択を不適格化しない場合は非常に簡単です。

SELECT 
    (SELECT COUNT(DISTINCT nr) FROM table1 WHERE is_ror=1 OR is_rog=1) cnt_ror_reg, 
    (SELECT COUNT(DISTINCT nr) FROM table1 WHERE is_u=1) cnt_u, 
    (SELECT COUNT(DISTINCT nr) FROM table1 WHERE is_unv=1) cnt_unv; 
0

あなたはユニオンを使用して複数の結果を得ることができます。 is_unv = 1

持つテーブルからis_u = 1つの 組合 選択カウントを有するテーブルからis_ror = 1又はis_rog = 1つの 組合 選択数(*)(*)を持つテーブルから

選択数(*)

結果セットには、3つの行のそれぞれにカウントの1つが含まれます。

1

事例たstatmentsはモンドの柔軟性を提供...

SELECT 
    SUM(IF(is_u > 0 AND is_rog > 0, 1, 0)) AS count_something, 
    ... 
from table 
group by nr 

のようなものについては、私はそれは私が何をしたいかわからないもちろんだ

トリックを行いますどのように考えるか

SELECT 
    sum(case 
     when is_ror = 1 or is_rog = 1 then 1 
     else 0 
     end) FirstCount 
,sum(case 
     when is_u = 1 then 1 
     else 0 
     end) SecondCount 
,sum(case 
     when is_unv = 1 then 1 
     else 0 
     end) ThirdCount 
from MyTable 
0

正確には、しかし、私はあなたの希望の結果を生成するロジックを使用することができると信じています。

+0

グループby nr? "nr"とは何ですか? OPは "番号"の略語として "nr"を使用しました – Bohemian

+1

@ボヘミアン私が正しいとすれば、値がuuid1とuuid2の "nr"という列があります – mkk

関連する問題