count集計の結果が0の場合でも表示したい方法

このQ&Aのポイント
  • SQLServerのクエリアナライザを使用して、count集計の結果が0の場合でも表示する方法について教えてください。
  • 具体的には、以下のようなテーブルとSQL文がありますが、結果が0の場合も表示したいです。
  • お願いします。
回答を見る
  • ベストアンサー

count集計の結果が0の場合でも表示したい

基本的なことですみません。 環境はSQLServerのクエリアナライザを使用してます。 内容は題名のとおりです。 例えば table1 fID  fName  fItemCD 1   山田   01 2   木村   03 3   田中   04 4   佐藤   02 5   高橋   03 6   川島   03 7   山下   06 のようなものがあって、以下のSQL文を処理すると select fItemCD, count(*) as Rslt from table1 where fItemCD in ('04','05','06') group by fItemCD 結果 fItemCD Rslt 04    1 06    1 が返ってきます これを fItemCD Rslt 04    1 05    0 06    1 と結果0件のものも表示したいのですが、いい方法ありますか? よろしくお願い致します。

  • G3MEN
  • お礼率43% (92/210)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

まったく存在しないものを検索するというのは無理な話なので、他にコード管理のテーブルを作ったりunionで作ったりして、その後joinするしかありません。 (1)表定義&データ例 create table table1 (fID smallint, fName varchar(8), fItemCD char(2)); insert into table1 values(1,'山田','01'); insert into table1 values(2,'木村','03'); insert into table1 values(3,'田中','04'); insert into table1 values(4,'佐藤','02'); insert into table1 values(5,'高橋','03'); insert into table1 values(6,'川島','03'); insert into table1 values(7,'山下','06'); create table fItemCD_Master (fItemCD char(2), fItemName varchar(20)); insert into FItemCD_Master values('01','A'); insert into FItemCD_Master values('02','BB'); insert into FItemCD_Master values('03','CCC'); insert into FItemCD_Master values('04','DDDD'); insert into FItemCD_Master values('05','EEEEE'); insert into FItemCD_Master values('06','FFFFFF'); insert into FItemCD_Master values('07','GGGGGGG'); insert into FItemCD_Master values('08','HHHHHHHH'); insert into FItemCD_Master values('09','IIIIIIIII'); insert into FItemCD_Master values('10','JJJJJJJJJJ'); (2)検索 select M.fItemCD,count(T.fItemCD) as Rslt from fItemCD_Master as M left join table1 as T on M.fItemCD=T.fItemCD where M.fItemCD in ('04','05','06') group by M.fItemCD;

G3MEN
質問者

お礼

遅くなりましたが、 大変参考になりました。 ありがとうございました。 結局ないものをカウントすること自体がナンセンスなのですね。。。

関連するQ&A

  • シートの合計

    よろしくお願いします。 エクセルでシート1~3迄あります。各シ-トのA列は名前、B列に数字が入っています。名前はA列のどの行にあるかわかりません。 同じ名前をシート4のA1に入力したらその名前の合計を出したい。  シート1    シート2   シート3       シート4   A   B    A   B   A    B     A    B 山田 10   木村  5  佐々木 18   木村  55  鈴木 20   田中 21  伊藤  33    ↑ 木村 50   山下 70  加藤  57  (入力する) 田中 15   高橋 90  佐藤  61 高橋 60   山田 10  鈴木  12             ・   ・   ・          

  • GROUP BYを使ったSELECT文の総件数を求める方法

    【表A】 列1 | 列2  ----------- 山田 | A 山田 | A 田中 | A 田中 | B 田中 | C 木村 | A 木村 | A 木村 | B 上記で列1・列2をグループ化した件数を求めたいのですが、Oracleだと   SELECT COUNT(*) FROM (SELECT 列1,列2 FROM 表A GROUP BY 列1,列2) というSQL文で結果「6」が出力されますが、SQLServerではエラーとなってしまいます。 SQLServerで実現したい場合はどのように記述すればよろしいでしょうか?

  • ピボットテーブルで同じデータがうまく集計できない(Excel2003)

    ピボットテーブルで同じデータがうまく集計できない(Excel2003) こんにちは。 Excel2003で、個人の支払金額のリストを作成し、それを元に ピボットテーブルを作成していますがうまくいきません。 【例】  山田花子 3,000  佐藤太郎 5,000  田中一郎 5,000  山田花子 1,500  ↓ピボットにすると  山田花子 3,000  山田花子2 1,500  佐藤太郎 5,000  田中一郎 5,000 という結果になってしまいます。 本来は山田花子は1件で4,500になるはずですが…。 元のリストのデータを入力し直して更新しても改善されません。 元のリストのデータに余分な空白やシングルクォーテーション等が 入力されていないかも確認しましたが、ありませんでした。 ご教授宜しくお願いします!

  • ピボットテーブルの集計結果を使って、さらに条件を付けて集計をしたいです

    ピボットテーブルの集計結果を使って、さらに条件を付けて集計をしたいです。 たとえば、このようなピボットテーブルから、 [A]      [B]       [C]       [D]                         1月 Group  Account1   Account2 G0    田中         東京     5         加藤         大阪     2 G1     佐藤        大阪      3 G1    田中         名古屋       A列のGroupをキーにして、D列を集計します。 G0の合計は7で個数は2、G1の合計は3で個数は1、という結果を出すにはどのようにしたら良いでしょうか?

  • Excelで名寄せしてデータ個数を集計する方法

    このような表があります。 001 山田 001 山田 002 鈴木 003 田中 004 高橋 004 高橋 005 鈴木 005 鈴木 005 鈴木 006 高橋 007 鈴木 008 鈴木 この名前(「山田」等)を基準にして名寄せをし、かつデータ個数を集計しなくてはなりません。 普通に集計をすると、 001 山田 001 山田 山田 データ個数 2 002 鈴木 鈴木 データ個数 1 003 田中 田中 データ個数 1 004 高橋 004 高橋 高橋 データ個数 2 005 鈴木 005 鈴木 005 鈴木 鈴木 データ個数 3 006 高橋 高橋 データ個数 1 007 鈴木 008 鈴木 鈴木 データ個数 2 ・・・という具合になりますが、番号(001等)の枠を超えて名寄せしたいのです。 希望する集計結果としては、 001 山田 001 山田 山田 データ個数 2 002 鈴木 005 鈴木 005 鈴木 005 鈴木 007 鈴木 008 鈴木 鈴木 データ個数 6 003 田中 田中 データ個数 1 004 高橋 004 高橋 006 高橋 高橋 データ個数 3 ・・・という表示になるようにしたいのです。(番号も必要データなので消去せずに残したいです) 今までは、番号&名前レベルでまず集計し、あとは検索して同じ名前があればカット&ペーストという非常に面倒な作業をマニュアルでしてきました。 何かもっと楽にできる方法をご存知の方はぜひ教えてください。

  • エクセルでこういうときは・・・?

    book1は   A B 1 1-1 山田 2 1-2 田中 3 1-1 佐藤 4 1-2 加藤 5 1-3 高橋 6 1-2 武田 7 1-3 岡田 と、なっております。この表から book2で 1-1 1-2 1-3 山田 田中 高橋 佐藤 田中 高橋 佐藤 加藤 高橋 #N/A 加藤 高橋 #N/A 武田 高橋 #N/A 武田 岡田 #N/A #N/A 岡田 と、いう表を作りたいのです。が、ご覧のとおりうまくいっておりません。(>_<) 上の表の検索はVLOOKを使っています。 なにかよい方法を教えてください。お願いします。

  • テーブル結合時の集計関数について

    環境:oracle 9i Oracleを触り始めて1週間程度の初心者です。 以下の3つのテーブルを外部結合し、集計結果を取得するSQL文をご教授いただけないでしょうか。COUNT関数やGROUP BY句などを使えばよさそう、というところまではわかるのですが、そこから先がどうも見当がつきません。。 どうぞ宜しくお願い致します。 【tbl1】 日付  社員名  摘要  労働時間 date sya_nm status  hours ------------------------------------------ 8/10  田中  出勤   8 8/15  田中  欠勤   0 8/20  田中  出勤   8 9/10  田中  出勤   8 8/20  佐藤  遅刻   6 8/25  高橋  出勤   8 【tbl2】 社員名 事業所 区分 時給 sya_nm jig_cd div pay ------------------------------------------ 田中   1  在籍 1000 佐藤   1  在籍 1000 鈴木   1  退職 1000 高橋   2  在籍 1000 【tbl3】 給与下限 給与上限  税 pay_from pay_to tax --------------------------------- 0    10000  100 10000 20000  200 ↓ 事業所(1)在籍者の8月分の支払情報をSelect文で取り出す。 (出勤日数=tbl1の出勤+遅刻) 社員名 出勤 欠勤 遅刻 時間  給与  税   ----------------------------------------------------------------- 田中   2  1  0  16 16000 200 佐藤   1  0  1   6  6000  100

  • 関数を教えて下さい。

    月曜日  佐藤  高橋  黒田  9:00   佐藤      黒田 10:00   佐藤  高橋  黒田 11:00   佐藤  高橋  黒田 12:00   佐藤       黒田 火曜日   山田  田中  右田  黒田  9:00   山田       右田  黒田 10:00   山田       右田  黒田 11:00   山田  田中       黒田 12:00   山田  田中 出勤表として上記のような表を作り管理しています。別の名簿シートに出勤している曜日の範囲に名前があるとその曜日を返して表示しているシートがあるのですが現在はそこに手で時間を入力しています。しかし100名以上在籍しており勤務時間もよく変動するので入力間違いが生じます。その為その下に勤務時間も自動で表示したいと考えています。しかしどのような関数を入れれば良いのか頭を絞って考えましたが分かりません。どなたか力を貸していただけないでしょうか 今はこのようになっています。〔曜日は自動表示になっています〕 佐藤   月  0  高橋   月  0  田中    0 火 黒田   月  火  右田       0    火 山田   0  火 それをこのように自動表示したいです。           佐藤     月       9:00  12:00  高橋     月      10:00  11:00   田中     火      11:00  12:00  黒田     月            火      9:00  12:00   9:00  11:00         右田             火      9:00  11:00 山田      火      9:00  12:00 佐藤さんの9:00を表示する計算式と12:00を表示する計算式を教えてください。よろしくお願いいたします

  • 葬儀時、お焼香の順番でもめました。

     祖母(90歳)の葬儀にて、お焼香の順番が問題となりました。 故人と関係の深い人から順番に・・・というのが一般的ですが 複雑な家系の場合、どのようになるでしょうか? ※名前は偽名・年齢はおおよそで書かせていただきました。 故人 山田A枝 (90歳) [山田家] ・山田花子(68歳) 故人の息子(1人っ子)の嫁 ・山田太郎(40歳) 故人の息子(1人っ子)の息子(長男)【喪主】 ・山田次郎(36歳) 故人の息子(1人っ子)の息子(次男)  (故人の息子は既に他界) [鈴木家] ・鈴木A子(47歳) 故人の息子(1人っ子)の娘(長女) ・鈴木A夫(48歳) 鈴木A子の旦那 ・鈴木B夫(20歳) 鈴木A子の息子(1人っ子) [山本家] ・山本A子(70歳) 故人の旦那の先妻の娘(長女) ・山本A夫(73歳) 山本圭子の今の旦那  (故人の旦那&先妻は既に他界) [佐藤家] ・佐藤A夫(50歳) 山本A子の初婚時の息子 ・佐藤A美(47歳) 佐藤A夫の嫁 ・佐藤B夫(20歳) 佐藤A夫の息子(長男) [田中家] ・田中A夫(48歳) 山本A子の2回目の結婚時の息子 ・田中A美(45歳) 田中A夫の嫁 [高橋家] ・高橋A美(41歳) 山本A子の3回目の結婚時の娘 ・高橋A夫(43歳) 高橋A美の旦那 ・高橋B子(17歳) 高橋A美の娘(長女) ・高橋B美(13歳) 高橋A美の娘(次女) [木村家] ・木村D子(70歳) 山田花子の姉 ・木村D夫(71歳) 木村D子の旦那 [佐野家] ・佐野E子(66歳) 山田花子の妹 ・佐野E二(69歳) 佐野E子の旦那

  • Accessでテーブルの内容を抽出したい

    お世話になります。 Access2000で作成しております。 下記のテーブルAがあります。 名前1とタイム1,名前2とタイム2をセットにして、 テーブルBを作成したいのですが、 どのようにすれば作成できるでしょうか? 可能でしたら、「クエリ」で、説明難しければ「SQL」で 教えていただければと思います。 ※SQLの場合は、クエリに変換して使用します。 ----テーブルA---- 番号 名前1 名前2 名前3 タイム1 タイム2 タイム3 1 山田 田中  佐藤 10 8 9 2 鈴木 木村  戸田 7  8 9 ----テーブルB------ 名前 タイム 山田 10 田中  8 佐藤 9 鈴木 7 ・ ・ -------------------- お手数ですがよろしくお願いいたします。