背景:如果一個人是7月和8月的活躍員工,我試圖顯示標題爲:id,full_name,position_7,position_8,position_9等的表格,然後2012_Jul 2012_Aug將在position_7和8中顯示在一行上。如果我不使用GROUP BY,我會得到輸出,但在2行。發生這種情況的原因是因爲在BLMths表中,一個人由於被僱用超過1個月而將有多個條目。使用CASE WHEN和GROUP BY
以下查詢將成功獲取每個人的id,full_name和month ...如果我不使用GROUP BY。但問題是,如果我忽略使用GROUP BY,我的表中每個人都有4行(或更多)。當我使用GROUP BY時,每個人都有一行所需的輸出,但我在表中所需的數據並不全部存在。
有誰知道我在做什麼錯?或者有人知道爲什麼當我使用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
你想做什麼? –
我試圖顯示一張如下所示的表: –
@KahlilN:請不要將這些信息放入註釋中,而是編輯您的問題。請檢查現有答案,並在他們工作時提供反饋,或者他們有什麼問題。 –