SQL初心者質問スレ [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
よろしくお願いします。
前任者が突然退職しました。
SQL初心者ですが業務を引く次ぐことになりました。
今、行き詰まってます。
次のようなテーブルが有ります。
table 出勤表(
社員番号 serial,
日付 date,
出勤時間 timestamp,
退勤時間 timestamp,
遅刻 boolean,
早退 boolean,
欠勤 boolean
)
ここである期間内の、例えば
where 日付 between '2017-05-01' and '2017-05-14'
内における社員それぞれの遅刻、早退、欠勤の【有無】を求めたいのです。
出力例)
社員番号 遅刻 早退 欠勤
10 F F T
11 F F F
12 T T F
のような。
色々試行錯誤していますが、まず、ある期間内に遅刻があったかどうか、というところからもう分かりません。
ヒントだけでもかまいません。
助けてください。
Postgresqlです。 Postgresqlってboolean型にMAXとかMINとかとったらどうなる?
たとえば指定期間内の遅刻のMAXかMINとれば行けると思うけど
だめならCASEでTRUEのとき1、それ以外は0にしてSUMなりMAXなり取ればいけるんじゃね >>977
SELECT 社員番号,
SUM(CASE WHEN 遅刻 THEN 1 ELSE 0 END) > 0 as 遅刻,
SUM(CASE WHEN 早退 THEN 1 ELSE 0 END) > 0 as 早退,
SUM(CASE WHEN 欠勤 THEN 1 ELSE 0 END) > 0 as 欠勤
FROM 出勤表
WHERE 日付 BETWEEN '2017-05-01' AND '2017-05-14'
GROUP BY 社員番号 レス数が950を超えています。1000を超えると書き込みができなくなります。