C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 自己結合について


(過去ログ 105 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■62756 / inTopicNo.1)  自己結合について
  
□投稿者/ かこ (1回)-(2011/11/01(Tue) 07:38:41)

分類:[データベース全般] 

同一テーブルにてある値の時のレコード数と別の値の時のレコード数を比較したいのですが・・・
(次のSQLではCODEの値は同一でVERSIONが別値です)
どうしても識別子がないようなエラーになります。
書き方が変でしょうか?Ora10Gです。

select
CODE,
VERSION,
count(CODE) 
from
TBL
left outer join
(
select
CODE C,
VERSION V,
count(CODE) CNT,
from
TBL
where
VERSION <> 'BASE'
group by
CODE,
VERSION
) cntCD
on
CODE = cntCD.C
where
VERSION = 'BASE'
group by
CODE,
VERSION
;
引用返信 編集キー/
■62757 / inTopicNo.2)  Re[1]: 自己結合について
□投稿者/ shu (1065回)-(2011/11/01(Tue) 08:08:49)
No62756 (かこ さん) に返信

SQL Server ですが

Select CODE, SUM(CASE VERSION WHEN 'BASE' THEN 1 ELSE 0 END) C1
           , SUM(CASE VERSION WHEN 'BASE' THEN 0 ELSE 1 END) C2
From TBL
Group By CODE

OracleにもCASEと同じようなのが多分あると思います。

引用返信 編集キー/
■62761 / inTopicNo.3)  Re[2]: 自己結合について
□投稿者/ ズズ (1回)-(2011/11/01(Tue) 13:52:22)
2011/11/01(Tue) 14:17:52 編集(投稿者)

No62756 (かこ さん) に返信

提示のSQLを修正するなら、TBL(またはこのエイリアス)を修飾する必要があります。

select
T.CODE,
T.VERSION,
count(T.CODE) 
from
TBL T
left outer join
(
select
CODE C,
VERSION V,
count(CODE) CNT,
from
TBL
where
VERSION <> 'BASE'
group by
CODE,
VERSION
) cntCD
on
T.CODE = cntCD.C
where
T.VERSION = 'BASE'
group by
T.CODE,
T.VERSION
;

ただし、これではcntCDのVERSION等はSELECTされません。
(実際にテーブルを作成して確認しているわけではないので...)

No62757 (shu さん) に返信

> Select CODE, SUM(CASE VERSION WHEN 'BASE' THEN 1 ELSE 0 END) C1
> , SUM(CASE VERSION WHEN 'BASE' THEN 0 ELSE 1 END) C2
> From TBL
> Group By CODE

質問者提示のSQLでは、VERSIONはGroup Byのメンバですので、VERSION毎の集計を行いたいことがうかがえますが、
上記ではVERSIONが'BASE'か否かの集計しか行えません。
引用返信 編集キー/
■62762 / inTopicNo.4)  Re[3]: 自己結合について
□投稿者/ shu (1067回)-(2011/11/01(Tue) 14:55:51)
No62761 (ズズ さん) に返信

> 質問者提示のSQLでは、VERSIONはGroup Byのメンバですので、VERSION毎の集計を行いたいことがうかがえますが、
> 上記ではVERSIONが'BASE'か否かの集計しか行えません。
SQLの内容はあまりみていません。

『同一テーブルにてある値の時のレコード数と別の値の時のレコード数を比較したいのですが・・・』
の内容をBASEのレコードとそれ以外のレコードの数の比較としてSQLを記述してあります。

引用返信 編集キー/
■62770 / inTopicNo.5)  Re[4]: 自己結合について
□投稿者/ かこ (2回)-(2011/11/01(Tue) 20:46:40)
皆様ありがとうございます
ズズさんのを参考にやってみたところ思い通りの結果を得られました!
感謝しております。

shuさんも参考意見ありがとうございます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -