MySql:从一个表透视
我有这个选择 选择concatdate_FormatStartEsson,'%H:%i','-',date_formatendLesson,'%H:%i'作为“日历”, 教室=第三个a时的案例 然后 选择Concat姓氏,'\r\n',关于,'\r\n',tcode,'\r\n',book 以“第三个A”结尾, 教室=第三课堂时的案例 然后 选择Concat姓氏,'\r\n',关于,'\r\n',tcode,'\r\n',book 以“第三方”结尾 从测试日历 其中DateStartesson='2017-02-24' 产生这种输出的:MySql:从一个表透视,mysql,pivot,Mysql,Pivot,我有这个选择 选择concatdate_FormatStartEsson,'%H:%i','-',date_formatendLesson,'%H:%i'作为“日历”, 教室=第三个a时的案例 然后 选择Concat姓氏,'\r\n',关于,'\r\n',tcode,'\r\n',book 以“第三个A”结尾, 教室=第三课堂时的案例 然后 选择Concat姓氏,'\r\n',关于,'\r\n',tcode,'\r\n',book 以“第三方”结尾 从测试日历 其中DateStartesson=
CALENDAR---------------->THIRD_A--------------->THIRD_B
08:00 - 09:00---------->PIPPO(bla)------------>NULL
09:00 - 10:00---------->PLUTO(bla)------------>NULL
09:00 - 10:00---------->NULL------------------->PAPERINO
我需要将数据显示为:
CALENDAR---------------->THIRD_A--------------->THIRD_B
08:00 - 09:00---------->PIPPO(bla)------------>NULL
09:00 - 10:00---------->PLUTO(bla)------------>PAPERINO
表格结构为:
id (int, pk)
classRoom_id (int)
lesson_id (int)
startLesson datetime
endLesson datetime
about varchar
tcode varchar
book varchar
surname
有什么提示吗
提前谢谢你 您似乎需要一个小组:
注:
如果希望每组一行,请使用group by。
没有必要使用不带from子句的subselect。
如果存在多个匹配项,则使用组_concat。对于你问题中的数据,max可能没问题。
通常不建议在列中嵌入新行字符。
很好,谢谢。关于在列中嵌入新行,为什么不鼓励?再次感谢。@user1291822。SQL结果集由列中的行组成。一行跨越多行可能会令人困惑。当然,您可能有很好的理由加入换行符。我只是说,一般来说,行和行通常是同义词。
SELECT concat(date_format(startLesson, '%H:%i'), ' - ',
date_format(endLesson, '%H:%i')) AS CALENDAR,
group_concat(case when classroom = 'third_a'
then concat(surname, '\r\n', about, '\r\n', tcode, '\r\n', book))
end) as THIRD_A,
group_concat(case when classroom = 'THIRD_B'
then concat(surname, '\r\n', about, '\r\n', tcode, '\r\n', book))
end) as THIRD_B
FROM test_calendar
WHERE date(startLesson) = '2017-02-24'
GROUP BY Calendar;