我正在尝试将两列fcalvdate和lcalvdate合并到LastCalvDate中,如果日期fcalvdate和lcalvdate不同,我想在下一行的LastCalvDate上添加新日期。
我尝试使用以下MySql查询
SELECT
`paid00_rpt_animreg`.`animalid` AS `animalid`,
`paid00_rpt_animreg`.`fcalvdate`,
`paid00_rpt_animreg`.`lcalvdate`,
(CASE
WHEN (`paid00_rpt_animreg`.`fcalvdate`IS NOT NULL) THEN `paid00_rpt_animreg`.`fcalvdate`
WHEN (`paid00_rpt_animreg`.`lcalvdate` IS NOT NULL) THEN `paid00_rpt_animreg`.`lcalvdate`
END) AS `LastCalvDate`
FROM
(`paid00_rpt_animreg`
JOIN `reg04_lkpsex`)
WHERE
(`paid00_rpt_animreg`.`sex` = 2)
此查询的示例输出数据如下:
# animalid, fcalvdate, lcalvdate, LastCalvDate
'070e0d2f-2403-4f97-b623-22cb0488745c', NULL, '2016-07-14', '2016-07-14'
'070e0d2f-2403-4f97-b623-22cb0488745c', NULL, '2016-07-14', '2016-07-14'
'070e0d2f-2403-4f97-b623-22cb0488745c', NULL, '2016-07-14', '2016-07-14'
'070e0d2f-2403-4f97-b623-22cb0488745c', NULL, '2016-07-14', '2016-07-14'
'070fdbb1-f39b-4f42-804c-4d7694f126d0', NULL, NULL, NULL
'08548c78-48b4-4e5b-81e7-d71caa03564c', NULL, '2017-02-19', '2017-02-19'
'08548c78-48b4-4e5b-81e7-d71caa03564c', NULL, '2017-02-19', '2017-02-19'
'08548c78-48b4-4e5b-81e7-d71caa03564c', NULL, '2017-02-19', '2017-02-19'
'08548c78-48b4-4e5b-81e7-d71caa03564c', NULL, '2017-02-19', '2017-02-19'
我的预期输出是
# animalid, fcalvdate, lcalvdate, LastCalvDate
'070e0d2f-2403-4f97-b623-22cb0488745c', 2016-07-14, '2016-07-14', '2016-07-14'
'070e0d2f-2403-4f97-b623-22cb0488745c', 2016-07-14, '2016-07-14', '2016-07-14'
'070e0d2f-2403-4f97-b623-22cb0488745c', 2016-07-14, '2016-07-14', '2016-07-14'
'070e0d2f-2403-4f97-b623-22cb0488745c', 2016-07-14, '2016-07-15', '2017-07-14'
'070e0d2f-2403-4f97-b623-22cb0488745c', 2017-07-14, '2016-07-15', '2017-07-15'
'070fdbb1-f39b-4f42-804c-4d7694f126d0', NULL, NULL, NULL
'08548c78-48b4-4e5b-81e7-d71caa03564c', 2017-02-19, '2017-02-19', '2017-02-19'
'08548c78-48b4-4e5b-81e7-d71caa03564c', 2017-02-19, '2017-02-19', '2017-02-19'
'08548c78-48b4-4e5b-81e7-d71caa03564c', '2017-02-19', '2017-02-19', '2017-02-19'
'08548c78-48b4-4e5b-81e7-d71caa03564c', '2017-02-19', '2017-02-19', '2017-02-19'
答案 0 :(得分:1)
您可以简单地使用Coalesce()
:
SELECT
`paid00_rpt_animreg`.`animalid` AS `animalid`,
COALESCE(`paid00_rpt_animreg`.`fcalvdate`,
`paid00_rpt_animreg`.`lcalvdate`) AS `fcalvdate`,
`paid00_rpt_animreg`.`lcalvdate`,
COALESCE(`paid00_rpt_animreg`.`fcalvdate`,
`paid00_rpt_animreg`.`lcalvdate`) AS `LastCalvDate`
FROM
(`paid00_rpt_animreg`
JOIN `reg04_lkpsex`)
WHERE
(`paid00_rpt_animreg`.`sex` = 2)