1

我真的被这个多重条件查询困住了。

有2组样本数据:

数据

这就是我想要的:

想

我想知道被多次提及的荣誉学生,即n=1,n=2,n=3……他们在2012年每个价格、每个月、每个不同类型的奖励和回报的平均收入是多少如果在特定月份中没有值,则为 NULL。

到目前为止我有

SELECT Type_Of_Reward, Honorable_Mention, MONTH(date)       
FROM Data_2 LEFT JOIN      
SELECT(Honorable_Mention, COUNT(*) FROM Data_2 GROUP BY Honorable_Mention ON Student_ID = Honorable_Mention)        
WHERE YEAR(Data_1.date)=2012 AND... 

任何意见/帮助将不胜感激。

4

1 回答 1

2

您可以通过使用连接和使用案例来尝试这个,如果您使用任何服务器端语言,请确保您为日期列设置了正确的数据类型我建议您现在使用服务器端语言来制作这种类型的数据表示可以试试这个

SELECT d.Type_Of_Reward, d2.Honorable_Mention,
(CASE WHEN d2.`Honorable_Mention` IS NOT NULL AND MONTH(d.`date`)=1 THEN  d2.`Honorable_Mention`   ELSE 0  END) AS jan,
. //for other months
.
.
.

(CASE WHEN d2.`Honorable_Mention_id` IS NOT NULL AND MONTH(d.`date`)=10 THEN  d2.`Honorable_Mention`   ELSE 0  END) AS `oct`
FROM 
`data_1` d LEFT JOIN `data_2` d2 ON(d.`id`=d2 .`Honorable_Mention`)

于 2013-11-05T19:29:01.823 回答