无状态条件的自动数据透视表查询

时间:2016-04-19 02:11:43

标签: mysql sql

请帮我合并两个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

返回结果如下:

enter image description here

0 个答案:

没有答案