背景:id、full_name、position_7、position_8、position_9などの見出しを持つテーブルを表示しようとしています。人が7月と8月のアクティブな従業員だった場合、2012_Julと2012_Augはposition_7と8に表示されます。一行で。GROUP BYを使用しない場合、出力は2行で取得されます。これが発生する理由は、BLMthsテーブルでは、1か月以上雇用されているため、1人の人が複数のエントリを持つためです。
以下のクエリは、すべての人のID、full_name、およびmonthを正常に取得します...GROUPBYを使用しない場合。ただし、問題は、GROUP BYの使用を怠ると、テーブル内の各人に4行(またはそれ以上)が表示されることです。GROUP BYを使用すると、1人あたり1行の出力が必要になりますが、テーブルに必要なデータがすべて揃っているわけではありません。
誰かが私が間違っていることを知っていますか?または、GROUP BYを使用すると、一部のCASEステートメントのデータが欠落しているように見える理由を誰かが知っていますか?
これに対する答えは単純でなければならないことは知っていますが、私はそれを解決できないようです。どんな助けでも大歓迎です。よろしくお願いします。
SELECT Blm.Ags, Blmths.Id, Ie.Full_Name, Blmths.Month,
CASE month
WHEN "2012-07-01" THEN 1
ELSE NULL
END AS Position_7,
CASE month
WHEN "2012-08-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_8,
CASE Blmths.Month
WHEN "2012-09-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_9,
CASE month
WHEN "2012-10-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_10,
CASE Blmths.Month
WHEN "2012-11-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_11,
CASE Blmths.Month
WHEN "2012-12-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_12,
CASE month
WHEN '2013-01-01' THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_1,
CASE month
WHEN "2013-02-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_2,
CASE month
WHEN "2012-03-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_3,
CASE Blmths.Month
WHEN "2013-04-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_4,
CASE Blmths.Month
WHEN "2013-05-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_5,
CASE Blmths.Month
WHEN "2013-06-01" THEN Date_Format(Blmths.Month, '%Y_%b')
ELSE NULL
END AS Position_6
FROM Bogus_Leadership_Months AS Blmths, Injection_Employees AS Ie,
Bogus_Leadership_Members AS Blm
WHERE Blmths.Id = Blm.Id
AND Ie.Ags = Blm.Ags
AND Ie.Centre_Id = '666'
GROUP BY Blm.Ags