SQL文で条件分岐して一つの文字列に連結する方法ってありますか?
たとえば社員の曜日レベルで仕事する曜日を表示したい場合とかです。
テーブルはシフト(社員名, 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日, 日曜日)
とします。
(社員名以外はすべてINTEGER型として0をfalse, 1をtrueとしている)
テーブルにあるレコードが、
社員名 | 月曜日 | 火曜日 | 水曜日 | 木曜日 | 金曜日 | 土曜日 | 日曜日 |
---|---|---|---|---|---|---|---|
山田 | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
田中 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
のようなデータであった場合、
名前 | 仕事曜日 山田 | 月火木 田中 | 水木金土
のような感じでデータを取り出したいのです。
軽く「SQL 条件分岐 文字列連結」でggるとCASE式でやるようですね。なので
SQL
1SELECT 社員名, 2 CASE WHEN 月曜日 = 1 THEN '月' ELSE '' END+ 3 CASE WHEN 火曜日 = 1 THEN '火' ELSE '' END+ 4 CASE WHEN 水曜日 = 1 THEN '水' ELSE '' END+ 5 CASE WHEN 木曜日 = 1 THEN '木' ELSE '' END+ 6 ... 7 CASE WHEN 日曜日 = 1 THEN '日' ELSE '' END AS 仕事曜日 8FROM シフト;
としてみましたが、結果は二つ目のカラム、つまり『仕事曜日』のカラムがなぜか常に0になります。
名前 | 仕事曜日 山田 | 0 田中 | 0
こういう処理って不可能なのでしょうか。
情報:
SQL: 10.4.24-MariaDB その他: phpmyadminの上で処理
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/29 02:18