这个带有case的mysql语句有什么问题?

时间:2015-08-03 02:43:40

标签: mysql

SELECT COUNT(*)
  FROM PATIENTS A, RECALLS_AFTER_RESERV C
  LEFT JOIN PATIENT_LAST_RESERV D
    ON D.PATIENT_ID = C.PATIENT_ID
 WHERE C.PATIENT_ID = A.ID
   AND C.OFFICE_ID = A.OFFICE_ID
   AND C.OFFICE_ID = ?
   AND YEAR(CONVERT_TZ(C.RECALLS_AT, 'UTC', 'Asia/Tokyo')) = ?
   AND (CASE
          WHEN ISNULL(D.STARTS_AT) THEN
           A.CHECKED_IN_AT
          ELSE
           D.STARTS_AT
       END) >= CONVERT_TZ('2015-01-27 00:00:00', 'Asia/Tokyo', 'UTC')) AND (CASE
   WHEN ISNULL(D.STARTS_AT) THEN
    A.CHECKED_IN_AT
   ELSE
    D.STARTS_AT
END) <= CONVERT_TZ('2015-01-27 23:59:59', 'Asia/Tokyo', 'UTC') AND C.RECALLED_AT IS NULL AND C.STARTS_AT IS NULL

我想用这个案例判断D.starts_at是否有值,如果没有,我用A.checked_in_at替换D.starts_at.but它给出了一个错误

1 个答案:

答案 0 :(得分:0)

(isnull(D.starts_at)然后A.checked_in_at其他D.starts_at结束时的情况)&gt; = CONVERT_TZ('2015-01-27 00:00:00','Asia / Tokyo','UTC') )

我终于找到了问题,案例陈述是对的。问题是上面的冗余