2014-11-21 3 views
0

나는이 쿼리에서 id와 값이 null 인 경우 행의 위치에 값 0.111이 표시됩니다. 없는.행이 있는지 확인하고 특정 값을 출력하지 않으면

SELECT FROM_UNIXTIME(t_stamp/1000, '%m/%d/%Y %l:%i %p') as t_stamp, 

    ROUND(MAX(
      CASE 
      WHEN id = "731" AND value IS NULL THEN 0.11 
      WHEN id = "731" THEN value 
      END 
      ),3 
     ) as Val1, 

    ROUND(MAX(
      CASE 
      WHEN id = "732" AND value IS NULL THEN 0.11 
      WHEN id = "732" THEN value 
      END 
      ),3 
     ) as Val2 

FROM table1 
WHERE id IN ("731", "732") and 

from_unixtime(t_stamp/1000) BETWEEN "2014-11-01 09:00:00" AND "2014-11-01 12:00:00" 

GROUP BY DATE(from_unixtime(t_stamp/1000)), HOUR(from_unixtime(t_stamp/1000)), MINUTE(from_unixtime(t_stamp/1000)) DIV 1 

나는이 몇 번 시도를하고 있어요 그리고 난 데이터베이스를 선택한 경우는 작동하지과 이유는, 문제가 행이 null이 아닌했다, 이유는 왜 첫 번째 '언제'를 다음과하지의 행이 존재하지 않기 때문입니다.

데이터 9:05 AM의 어떤 행이 없습니다이

|  t_stamp   | Val1 | Val2 | 
| 11/01/2014 9:00 AM | 0.022 | 0.044 | 
| 11/01/2014 9:01 AM | 0.023 | 0.045 | 
| 11/01/2014 9:02 AM | 0.022 | 0.044 | 
| 11/01/2014 9:03 AM | 0.022 | 0.044 | 
| 11/01/2014 9:04 AM | 0.022 | 0.044 | 
| 11/01/2014 9:05 AM | NULL | 0.046 | 
| 11/01/2014 9:06 AM | 0.023 | 0.040 | 

것 같습니다. 거기에 732을 나는 ID 731의 발을 확인하고 별도의 그냥 ID와 SELECT 않았고 시간 오전 9시 5분에 대한 행이 없다는 것을 발견 만에

|  t_stamp   | Val1 | Val2 | 
| 11/01/2014 9:00 AM | 0.022 | 0.044 | 
| 11/01/2014 9:01 AM | 0.023 | 0.045 | 
| 11/01/2014 9:02 AM | 0.022 | 0.044 | 
| 11/01/2014 9:03 AM | 0.022 | 0.044 | 
| 11/01/2014 9:04 AM | 0.022 | 0.044 | 
| 11/01/2014 9:05 AM | 0.11 | 0.046 | 
| 11/01/2014 9:06 AM | 0.023 | 0.040 | 

: 이것은 내가 바라던 출력입니다 입니다.

실제로 INSERT를 수행하지 않고 이것이 가능한가요? 0.11 값만 출력합니까?

답변

1

나는 당신의 논리가 조금 벗어난 것 같아. 그것은 731 행에 NULL 값을 찾고 있습니다. 누락 된 행을 찾지 않습니다. 대신 다음을 시도하십시오.

COALESCE(ROUND(MAX(CASE WHEN id = "731" THEN value END), 3), 0.11) 
+0

고마워요! 그 지금 일하고있어 라! 굉장한 굉장한! – hocuspocus31