请帮我合并两个mysql查询,因为我没有足够的sql编程技巧。
我认为这与MySQL pivot table中的透视表不同,因为在这种情况下我们仍然需要手动说明案例陈述:WHEN DATE_FORMAT(t.mulai, '%Y-%m-%d') = '2014-01-01'
,WHEN DATE_FORMAT(t.mulai, '%Y-%m-%d') = '2014-07-01'
这是我做过的事情
对于第一个查询,我需要在每次新的“mulai”时手动说明条件。插入的数据,例如新的“mulai”数据。数据2016-01-01已插入,我必须在第一个查询中添加类似WHEN DATE_FORMAT(t.mulai, '%Y-%m-%d') = '2016-01-01'
的新CASE。
第一次查询:
SELECT
nip,
nama,
DATE_FORMAT(t.tgl_grade_terakhir, '%d-%m-%Y') AS tgl_grade_terakhir,
(CASE
WHEN DATE_FORMAT(t.mulai, '%Y-%m-%d') = '2012-01-01' THEN t.nilaitalenta
ELSE NULL
END) AS sem1_2012,
(CASE
WHEN DATE_FORMAT(t.mulai, '%Y-%m-%d') = '2012-07-01' THEN t.nilaitalenta
ELSE NULL
END) AS sem2_2012,
(CASE
WHEN DATE_FORMAT(t.mulai, '%Y-%m-%d') = '2013-01-01' THEN t.nilaitalenta
ELSE NULL
END) AS sem1_2013,
(CASE
WHEN DATE_FORMAT(t.mulai, '%Y-%m-%d') = '2013-07-01' THEN t.nilaitalenta
ELSE NULL
END) AS sem2_2013,
(CASE
WHEN DATE_FORMAT(t.mulai, '%Y-%m-%d') = '2014-01-01' THEN t.nilaitalenta
ELSE NULL
END) AS sem1_2014,
(CASE
WHEN DATE_FORMAT(t.mulai, '%Y-%m-%d') = '2014-07-01' THEN t.nilaitalenta
ELSE NULL
END) AS sem2_2014,
(CASE
WHEN DATE_FORMAT(t.mulai, '%Y-%m-%d') = '2015-01-01' THEN t.nilaitalenta
ELSE NULL
END) AS sem1_2015
FROM (SELECT
nama,
mulai,
tgl_grade_terakhir,
talenta AS nilaitalenta,
nip
FROM history_talenta) AS t
我希望我可以使用此查询对case语句进行自动化,但我对实现没有任何了解。
SELECT DISTINCT (
mulai
)
FROM history_talenta
WHERE mulai <> '0000-00-00'
ORDER BY mulai ASC
返回结果如下: