SELECT, 関数

SELECTのCASE句について

コメントをどうぞ

ITコーディネータのシュウです。

たまにはITコーディネータについての情報もあったほうがいいかと思い、ITコーディネータ協会のHPから気づいた点を報告します。結構HPもリニューアルしていますね。

それで、1年以上前からイノベーションが創出できる次世代高度IT人材の育成について、独立行政法人情報処理推進機構(IPA)と共同で呼びかけ「IT融合人材育成連絡会」を立ち上げていました。そして「IT融合人材」の具体的な育成と組織のあり方についての検討成果についての最終報告書がホームページで公開されているようです。
http://www.itc.or.jp/news/inv20140325.html

イノベーションを創出できる人材を、あるプロセスに従うことで効果的に育成できれば?日本の将来にとっても本当に大きいことですよね。頑張れニッポン!

<本日の題材>
SELECTのCASE句について

今回は ブレーキ パッド 【送料無料】ACRE(アクレ)ブレーキ パッド スーパーファイター フロント用 89.9~92.5 E38A/E39A ギャラン/エテルナ TURBO 4WD、最近システムを作り込むときに確認した内容で、SELECT文で複数の条件でのそれぞれの件数の結果を1つのSQLで実施する際に 【送料無料】Weds(ウェッズ) REVSPEC PRIMES(レブスペック プライム) 品番:PR-N109 フロント用 ニッサン ブルーバードシルフィー FG10 '00/8~'05/12 Weds [ブレーキパッド 自動車] UNION DELTA THATS JD1 Original Front Table、CASE句を利用したケースについて記載します。(ORACLEです)

例)あるテーブル(受注実績テーブルとします)のデータで DUNLOP ダンロップ ルマン5 ルマンV LM5 LE MANS 5 165/60R15 77H タイヤ単品1本価格 フジコーポレーション 【アウトレット一番限定特価】 ※ご注文前に在庫の確認をお願いします。、あるフラグ(判定フラグとします)に「1」が立っているものと「0」のもの 14インチ サマータイヤ セット【適応車種:カローラ アクシオ(140系 全グレード)】WEDS ライツレー ZM ブラックメタリックポリッシュ 5.5Jx14トランパス mpZ 185/70R14、及び全体の合計件数を抽出する。

SELECT
受注年月
, COUNT(CASE 判定フラグ WHEN '1' THEN 1 ELSE NULL END) AS 判定有
, COUNT(CASE 判定フラグ WHEN '0' THEN 1 ELSE NULL END) AS 判定無
, COUNT(*) 合計件数
FROM 受注実績
GROUP BY 受注年月
ORDER BY 受注年月;

他の方法としては 、

ブレーキ パッド 【送料無料】ACRE(アクレ)ブレーキ パッド スーパーファイター リア用 97.10~ WRGY61 サファリ
CRIMSON(クリムソン) CLUB LINEA L747 KING LABEL (クラブリネア L747 キングレーベル) 22インチ 13.0J PCD:114.3 穴数:5 inset:44 DISK TYPE:LOW カラー:シルバーポリッシュ [ホイール1本単位]/H!【店舗取付サービス】【Z34 フェアレディZ バリス】Z34 FAIRLADY Z ARISING -II 交換部品 AIR SHLOUD CARBON.【送料無料】 235/65R18 18インチ OZ SツーリズモLM 8J 8.00-18 YOKOHAMA ヨコハマ ジオランダー SUV G055 サマータイヤ ホイール4本セット,PIRELLI(ピレリ) サマータイヤ 夏用 2本セット 225/55R17 CINTURATO P7 BLUE 225/55R17 101W XL ●タイヤ2本セット● 4523995023220

ブレーキ パッド 【送料無料】ACRE(アクレ)ブレーキ パッド スーパーファイター リア用 97.10~ WRGY61 サファリ

、インラインビューを使用して下記のように行うこともできます。

SELECT
受注実績1.年月
, 受注実績1.件数 判定有
, 受注実績2.件数 判定無
, 受注実績3.件数 合計件数
FROM
(SELECT 受注年月, COUNT(*) 件数 FROM 受注実績
WHERE 判定フラグ = '1'
GROUP BY 受注年月) 受注実績1
, (SELECT 受注年月, COUNT(*) 件数 FROM 受注実績
WHERE 判定フラグ = '0'
GROUP BY 受注年月) 受注実績2
, (SELECT 受注年月, COUNT(*) 件数 FROM 受注実績
GROUP BY 受注年月) 受注実績3
WHERE 受注実績1.受注年月 = 受注実績2.受注年月
AND 受注実績1.受注年月 = 受注実績3.受注年月
ORDER BY 受注実績1.受注年月;

 

でも、CASE句を使って抽出したほうが簡単ですね。
CASE文はいろいろなところで使用できますが、1つの例としてあげました。

今日は以上まで


にほんブログ村