• ベストアンサー

SQLでのNULLのレコードの表示方法は?

Windows2000,VB6,SP5で開発しています。 質問させていただきます。 例えば、下記のようなデータがあったとします。 名前   出勤日  労働時間 Aさん  11月29日  8時間 Bさん  11月29日  7時間 Cさん  11月30日  9時間 Dさん  11月28日  6時間 Eさん  11月27日  3時間 これをSQL文で、出勤日を11月29日で抽出して、 名前   労働時間 Aさん   8時間 Bさん   7時間 Cさん   0時間 Dさん   0時間 Eさん   0時間 という感じで抽出するにはどうしたらいいのでしょうか? ご存知の方いらっしゃいましたら、ご教授お願いしますm(_ _)m

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

  • ベストアンサー
  • eitetsu
  • ベストアンサー率64% (22/34)
回答No.3

Null のレコードを0として扱いたいのであれば、 select IsNull(労働時間, 0) as 労働時間 from table where としてあげれば、労働時間のフィールドがNullの場合、かわりの値として0を 出力することができます。 ・・ということでよろしいでしょうか。 くわしくは、BooksOnlineで、isnull関数を調べてみてください。

その他の回答 (2)

回答No.2

同一テーブル上に名前、出勤日、労働時間の3フィールドがある、ということでしょうか? とすれば ISNULL関数ではいかがでしょう?

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

LEFT OUTER JOIN でこんな感じで抽出できるかと。 名前   労働時間 Aさん   8時間 Bさん   7時間 Cさん   null Dさん   null Eさん   null

参考URL:
http://www.atmarkit.co.jp/fnetwork/rensai/sql06/sql1.html

関連するQ&A

  • AccessでのNULLのレコードの表示方法は?

    例えば、下記のようなデータがあったとします。 名前   出勤日  労働時間 Aさん  11月29日  8時間 Bさん  11月29日  7時間 Cさん  11月30日  9時間 Dさん  11月28日  6時間 Eさん  11月27日  3時間 これをクエリで、出勤日を11月29日で抽出して、 名前   労働時間 Aさん   8時間 Bさん   7時間 Cさん   0時間 Dさん   0時間 Eさん   0時間 という感じで抽出するにはどうしたらいいのでしょうか? ご存知の方いらっしゃいましたら、ご教授お願いします。

  • SQLサーバに対するSQL文で抽出した時にないレコードを0で表示させるには?

    例えば、下記のようなデータがあったとします。 名前   出勤日  労働時間 Aさん  11月29日  8時間 Bさん  11月29日  7時間 Cさん  11月30日  9時間 Dさん  11月28日  6時間 Eさん  11月27日  3時間 これをSELECT ~ FROM テーブル名 WHERE 出勤日 = "11月29日"~とという感じで抽出した時に、 普通ならAさんとBさんのレコードのみ抽出されますよね? それを、 名前   労働時間 Aさん   8時間 Bさん   7時間 Cさん   0時間 Dさん   0時間 Eさん   0時間 という感じで抽出するにはどのようなSQL文を書けばいいのでしょうか? ご存知の方いらっしゃいましたら、ご教授お願いします。

  • SQL

    以下のようなテーブルがあり、 区分に2、3、4があれば抽出しないという SQL文を教えていただければと思います。 (SQLSERVER2000を使用しています) 名称    | 区分 テストa |  1 テストa |  1  テストa |  2 テストb |  1 テストb |  1 テストc |  1 テストc |  2 テストc |  3 テストc |  4 テストc |  5 テストd |  1 テストd |  1 テストd |  5 テストd |  5 テストd |  5 例でいくとテストaは区分が1、1、2で 2がはいっているので抽出しない。 テストbは1、1なので抽出する。 テストcは1、2、3、4、5で2、3、4がはいっている ので抽出しない。 テストdは1、1、5、5、5なので抽出する。 つまり結果としては テストaとテストdが抽出されるということです。 質問もままならないほどSQL初心者のため、 どうかご回答いただきたいと思います。 よろしくお願いします!!

  • SQLを教えてください!!

    テーブルAとテーブルBがあり、両方に存在しないものを抽出してエラーとする処理を行いたいのですが、 どういうSQlを書いたらいいのか教えてください。 下記例としてテーブルにデータがあったとしたら、結果として 004 商品D 005 商品E 006 商品G というデータを抽出したいのですが・・ テーブルA             テーブルB -------------        ----------------------- コード  商品名 NO コード   商品名 001 商品A        1 001 商品A 002 商品B        2 001  商品A 003 商品C        3 002   商品B 004 商品D        4 003 商品C 006 商品G        5 003 商品C                 6 005 商品E

  • SQLの書き方

    当事業所の健康診断管理をVB.Netで行おうとしています 下記ののようなDB内容で『c』のみ検査するスタッフを抽出するSQLはどのようになりますか? フィールド:社員ID、名前、検査種別        0001、中川、A        0001、中川、B        0001、中川、C        0002、木村、A        0002、木村、C        0003、大野、C        0004、田中、A        0004、田中、C        0005、山田、A        0005、山田、B 抽出後は『0003、大野、C』としたいのですが… なかなかいいアイデアがでてきません 独学で勉強しているのですが、うまく処理させることができません (かなりの遠回りでなら処理可能なんですが:汗) ご教授お願いします。

  • SQLのど素人の質問です。

    A1=0, A2=0, A3=0,  A4=0 B1=0, B2=0, B3=125, B4=0 C1=77, C2=0, C3=457, C4=0 D1=0, D2=5, D3=0, D4=0 E1=2, E2=0, E3=0, E4=0 SQLの条件文で4番目が0であって1~3番目までは0以外だったらTrueとなる処理はどうしたらいいいでしょうか? いろいろ考えたのですがわかりません。

  • sqlの結果のrsからフィード数を得る方法

    sql = "select a,b from t" Set rs = dbc.Execute(sql) ここでは2が得られる。 sql = "select a,b,c,d,e from t" Set rs = dbc.Execute(sql) ここでは5が得られる。 というのやりたいのですが、2や5をrsから得られないでしょうか? sqlのa,b,c,d,eの部分が固定ではなくaspプログラムで動的に作るのでrs.Fields()ではなくてrs()で取得しようとしています。

  • SQLの条件分の質問です

    A1=0, A2=0, A3=0,  A4=0 B1=0, B2=0, B3=125, B4=0 C1=77, C2=0, C3=457, C4=0 D1=0, D2=5, D3=0, D4=0 E1=2, E2=0, E3=0, E4=0 SQLの条件文で4番目が0であって1~3番目までは0以外だったらTrueとなる処理はどうしたらいいいでしょうか? いろいろ考えたのですがわかりません。

  • SQLがわかりません。

    以下のTESTテーブルから以下の結果を表示するようなSQLを教えて頂けないでしょうか。 TESTテーブルでTYPE(1,2,3)を抽出して、2,1,3の順番にして それぞれのTYPEごとにDBIDでソートをしたいです。 どうかよろしくお願いいたします。 table TEST DBID | NAME | TYPE ------------------------------- 1 | A | 1 2 | B | 2 3 | C | 3 4 | D | 4 5 | E | 1 6 | F | 2 7 | G | 3 8 | H | 4 9 | I | 1 10 | J | 2 結果 DBID | NAME | TYPE ------------------------------- 2 | B | 2 6 | F | 2 10 | H | 2 1 | A | 1 5 | D | 1 9 | G | 1 3 | D | 3 7 | G | 3

  • 関数での日当計算の方法

    出勤時間9:00(セルA1) 退社時間18:00(セルB1) 休憩時間1:00(セルC1) 実労働時間(セルD1)B1-A1-C1=8:00と設定しました。  たとえば時給1400(セルE1)の場合、一日の給料を計算する時、D1*E1で11,200と計算して欲しいのですが、467という計算結果になってしまいます。 なにか計算させる方法はありますか? 関数を使うのか、または違う方法があるのか、分かりません。 教えてください。