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

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

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

SQL文について

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

■98094 / inTopicNo.1)  SQL文について
  
□投稿者/ 鏡月 (63回)-(2021/09/15(Wed) 13:53:33)

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

いつもお世話になっております。
SQL文で他のやり方があるかご存知の方が降りましたらご教授お願い致します。

下記TBL情報のデータを社員コード毎に各作業時間が横に表示されるように出力したいと考えております。
社員ID 種別 作業時間
0001 事務 1
0001 製造 2
0001 会議 3
0002 事務 2
0002 製造 3
0002 会議 4
0003 製造 2
0003 会議 3

社員ID 事務作業時間 製造作業時間 会議作業時間
0001 1 2 3
0002 2 3 4
0003 NULL 2 3

下記SQLとは別の方法で出力するやり方はあるのでしょうか。
SELECT
TBL.社員CD,事務.事務作業時間,製造.製造作業時間,会議.会議作業時間
FROM TBL
LEFT JOIN(SELECT 社員ID SUM(作業時間) AS 事務作業時間 FROM TBL WHERE 種別='事務' GROUP BY 社員ID) AS 事務 ON TBL.社員CD = 事務.社員CD
LEFT JOIN(SELECT 社員ID SUM(作業時間) AS 製造作業時間 FROM TBL WHERE 種別='製造' GROUP BY 社員ID) AS 製造 ON TBL.社員CD = 製造.社員CD
LEFT JOIN(SELECT 社員ID SUM(作業時間) AS 会議作業時間 FROM TBL WHERE 種別='会議' GROUP BY 社員ID) AS 会議 ON TBL.社員CD = 会議.社員CD



引用返信 編集キー/
■98096 / inTopicNo.2)  Re[1]: SQL文について
□投稿者/ furu (127回)-(2021/09/15(Wed) 15:00:20)
No98094 (鏡月 さん) に返信
> 下記SQLとは別の方法で出力するやり方はあるのでしょうか。
そのSQLで期待した出力となりました?

データベース何か不明だけどこんな感じ

SELECT
社員CD,
SUM(CASE 種別 WHEN '事務' THEN 作業時間 END) 事務作業時間,
SUM(CASE 種別 WHEN '製造' THEN 作業時間 END) 製造作業時間,
SUM(CASE 種別 WHEN '会議' THEN 作業時間 END) 会議作業時間
FROM TBL
GROUP BY 社員CD




引用返信 編集キー/
■98097 / inTopicNo.3)  Re[2]: SQL文について
□投稿者/ 鏡月 (64回)-(2021/09/15(Wed) 15:23:36)
No98096 (furu さん) に返信
> ■No98094 (鏡月 さん) に返信
>>下記SQLとは別の方法で出力するやり方はあるのでしょうか。
> そのSQLで期待した出力となりました?
>
> データベース何か不明だけどこんな感じ
>
> SELECT
> 社員CD,
> SUM(CASE 種別 WHEN '事務' THEN 作業時間 END) 事務作業時間,
> SUM(CASE 種別 WHEN '製造' THEN 作業時間 END) 製造作業時間,
> SUM(CASE 種別 WHEN '会議' THEN 作業時間 END) 会議作業時間
> FROM TBL
> GROUP BY 社員CD
>
⇒furu様
 ご回答ありがとうございます。

 実際のTBL情報と差異がある為、動作確認せずに記入させていただきました。
 CASE分を使用して無事に出力することが出来ました。
 ありがとうございました。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ