
例えば、下記のようなデータがあったとします。
名前 出勤日 労働時間
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文を書けばいいのでしょうか?
ご存知の方いらっしゃいましたら、ご教授お願いします。
No.1ベストアンサー
- 回答日時:
下記のように行えばOKだと思います。
確認していないので間違っていたらごめんなさい。ON以下の名前でリンクしている部分はできればそのデータ固有のIDがあれば確実です。
Select A.名前,ISNULL(B.労働時間,0) as 労働時間 From テーブル名 as A
Left Join (Select * From テーブル名 Where 出勤日 >= '2004/11/29') as B ON A.名前 = B.名前
この回答への補足
早速の回答ありがとうございます。
先ほど試してみたところ、
「クエリ式,'ISNULL(B.労働時間,0)'の関数で使用されている引数の数が正しくありません。」
というエラーがでてしまいました(--;)
一体どういうことなんでしょうか?
色々ためしてみましたが、ダメでした…。
No.7
- 回答日時:
つまらない事を確認して申し訳ありませんが、#1のステートメントと全く同じ書き方ですか?Left JoinがただのJoinになっていませんか?
.NETのことは良く分かりません。もしだめであるならば、#3の回答でも解決できると思います。
select 名前,
case when 出勤日 => '2004/11/29' then 労働時間 else 0 end as 労働時間
from テーブル名
がんばってみましたが、どうしてもできないので、
あきらめました(^^;)
これをひきずって仕事するわけにも行かないので…。
ほんとうに、色々とありがとうございました!
No.6
- 回答日時:
#5の補足です。
もしOracleでしたら、#1のSQL文のISNULLをnvlに変えて実行してみてください。
ちなみにSQLのCase-Whenに相当するOracleの命令はDecodeです。
DECODE( <式1> , <判定値1> , <結果値1> [ , <判定値2> , <結果値2> , ... ] [ , <デフォルト値> ] )
この回答への補足
ご丁寧な回答本当にありがとうございます。
しかし、サーバはSQLに間違いないです。と思います。
うちにはSQLサーバしかないので。
それで先ほど、やっとエラーせずにできたんですが、
結果が、
名前 労働時間
Aさん 8時間
Bさん 7時間
でした。。。
やはりASP.NETと何か関係があるんでしょうか?
No.5
- 回答日時:
もしかしたら、使用しているデータベースがMicrosoftのSQL Serverではなくて、Oracleとか他のデータベースを使用している可能性がありますね。
その場合、ISNULLやCASE-WHENといったステートメントが使用できません。実際に使用しているデータベースは何でしょうか。
No.3
- 回答日時:
全て抽出するわけだから、Where句に条件として書かかなければ良いだけです。
その上で、表示を小細工したいということなので、加工式を書く。
select
名前,
case
when 出勤日 = '2004/11/29' then 労働時間 else 0 end as 労働時間
from テーブル名
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 労働相談 有休消化について教えて下さい。 6月末にて退職の予定です。 現在、有休(1日8時間)残りが29日と半 2 2022/04/03 01:05
- その他(エンターテインメント・スポーツ) 15年前って、昔ですか?それともわりと最近? 2 2023/02/07 22:57
- その他(エンターテインメント・スポーツ) 16年前、覚えていますか?? 6 2023/02/19 22:11
- Excel(エクセル) エクセル2019の関数を教えてください。 8 2022/12/16 12:45
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- その他(悩み相談・人生相談) 自閉症は、自閉症同士でしか仕事しちゃいけませんか? 1 2023/02/09 18:27
- その他(エンターテインメント・スポーツ) 2007年の想い出はありますか? 1 2023/03/03 20:54
- その他(エンターテインメント・スポーツ) ニートは、過去へ戻るしかないですよね? 1 2023/02/19 22:06
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- その他(スポーツ) 大谷翔平の一番スゴいのはなんですか? 2 2023/02/24 15:35
このQ&Aを見た人はこんなQ&Aも見ています
-
SQLでSUMなどの関数でデータが無い時に0を返したい。
Oracle
-
テーブルからのselectにおいてデータの有無により結果をわけたい
PostgreSQL
-
count集計の結果が0の場合でも表示したい
SQL Server
-
-
4
SQL文で、合計が0のレコードを表示させないようにしたい。
SQL Server
-
5
データ無し時は空白行にしたい【SQLITE】
その他(データベース)
-
6
テーブルに存在しない列をselect文で出力する事はできないでしょうか?
PostgreSQL
-
7
【Transact-sql】 where条件、inのパタメータを変数に持たせる方法
SQL Server
-
8
SQLで、Join句で結合したテーブルにデータが無い場合について
SQL Server
-
9
SQLのテーブルにないデータの出力
SQL Server
-
10
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
11
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
SQLで、Join句で結合したテ...
-
既存データをINSERT文にして出...
-
重複データの一方を削除するSQL...
-
別テーブルを参照し、その内容...
-
ExcelのMatch関数のようなもの...
-
テーブル名が可変の場合のクエ...
-
ACCESSのVBAにてExcelに行...
-
Accessの構成をコピーしたい
-
SQLServerからMDBへのデータバ...
-
ACCESS クエリーでソートの不具合
-
2008年12月現在の日本語対応のM...
-
異なるテーブルの値を比較テー...
-
2つのテーブルをLIKE演算子のよ...
-
結合したテーブルをSUMしたい
-
改行を含んだデータのインポート
-
H2 DataBaseご存知の方教えて...
-
SQLサーバに対するSQL文で抽出...
-
不動産検索サイトのテーブル構成
-
フラグをたてるってどういうこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
既存データをINSERT文にして出...
-
SQLで、Join句で結合したテ...
-
Accessの構成をコピーしたい
-
SQLサーバに対するSQL文で抽出...
-
テーブル名が可変の場合のクエ...
-
副問合せを使わずにUNIONと同様...
-
同一テーブル内での比較(最新...
-
PRIMARY KEYのコピー
-
2つのテーブルをLIKE演算子のよ...
-
結合したテーブルをSUMしたい
-
ExcelのMatch関数のようなもの...
-
ACCESSのVBAにてExcelに行...
-
DB2のSQLコマンドについて
-
データ無し時は空白行にしたい...
-
ADO+ODBCでテーブルに接続する...
-
ACCESS クエリーでソートの不具合
-
改行を含んだデータのインポート
-
複数のテーブルからデータを取...
-
ExcelのVLOOKUP関数の動作をMyS...
おすすめ情報