안녕하세요
이리님게 대단히 감사 하다고 말씀 드립니다 ^^
감사드리고요
마지막 한고비좀 부탁 드립니다.
- 이전글에 이어서 입니다 - http://www.sqler.com/index.php?mid=bSQLQA&document_srl=882234
;WITH TBLX(sensor_id, [timestamp], calc_value)
AS
(
SELECT '000', '2016-11-16 11:51:41', 0.02 UNION ALL
SELECT '000', '2016-11-16 11:52:42', 0.01 UNION ALL
SELECT '000', '2016-11-16 11:53:43', 0.03 UNION ALL
SELECT '054', '2016-11-16 11:51:44', 0.01 UNION ALL
SELECT '054', '2016-11-16 11:52:45', 0.02 UNION ALL
SELECT '054', '2016-11-16 11:53:46', 0.03 UNION ALL
SELECT '000', '2016-11-17 11:51:47', 0.02 UNION ALL
SELECT '000', '2016-11-17 11:52:48', 0.01 UNION ALL
SELECT '000', '2016-11-17 11:53:49', 0.03 UNION ALL
SELECT '054', '2016-11-17 11:51:50', 0.01 UNION ALL
SELECT '054', '2016-11-17 11:52:51', 0.02 UNION ALL
SELECT '054', '2016-11-17 11:53:52', 0.03
)
SELECT CONVERT(NVARCHAR(19), timestamp, 120) as '계측일시',[000], [054]
FROM
(
SELECT ROW_NUMBER() OVER(PARTITION BY sensor_id, SUBSTRING([timestamp], 1, 10) ORDER BY [timestamp]) AS ROW_NUM
, sensor_id
, [timestamp]
, calc_value
FROM TBLX
where timestamp BETWEEN '2016-11-16 00:00:00' AND '2016-11-17 23:59:00'
AND sensor_id IN ('054', '000')
) AS T1
--WHERE T1.ROW_NUM = 1 ============================> 풀면 오류 입니다.
PIVOT
(
MAX(calc_value) FOR sensor_id IN ([000], [054])
) AS pvt
이리님이 주신 쿼리를 조금 변경해서, 피벗을 사용 하였습니다.
한데, where 절과 충돌이 발생 합니다.
밑에서 다섯번재 줄에 WHERE 절이 pivot 과 말썽을 일으킵니다.
죄송하게도 마지막 까지 스스로 하지를 못하네요
다시한번 이리님께 감사의 말씀을 드립니다
감사 합니다 ^^
Comment 2
-
호리205
2016.11.16 20:48
원하시는 결과가 이게 맞는지 모르겠지만 일단 에러는 안뜨네요..WITH TBLX(sensor_id, [timestamp], calc_value)AS(SELECT '000', '2016-11-16 11:51:41', 0.02 UNION ALLSELECT '000', '2016-11-16 11:52:42', 0.01 UNION ALLSELECT '000', '2016-11-16 11:53:43', 0.03 UNION ALLSELECT '054', '2016-11-16 11:51:44', 0.01 UNION ALLSELECT '054', '2016-11-16 11:52:45', 0.02 UNION ALLSELECT '054', '2016-11-16 11:53:46', 0.03 UNION ALLSELECT '000', '2016-11-17 11:51:47', 0.02 UNION ALLSELECT '000', '2016-11-17 11:52:48', 0.01 UNION ALLSELECT '000', '2016-11-17 11:53:49', 0.03 UNION ALLSELECT '054', '2016-11-17 11:51:50', 0.01 UNION ALLSELECT '054', '2016-11-17 11:52:51', 0.02 UNION ALLSELECT '054', '2016-11-17 11:53:52', 0.03)SELECT * FROM (SELECT sensor_id, [timestamp], calc_valueFROM(SELECT ROW_NUMBER() OVER(PARTITION BY sensor_id, SUBSTRING([timestamp], 1, 10) ORDER BY [timestamp]) AS ROW_NUM, sensor_id, [timestamp], calc_valueFROM TBLX) AS T1WHERE T1.ROW_NUM = 1 ) AS T2PIVOT (MAX(calc_value) FOR sensor_id IN ([000], [054])) AS PVT -
메아리
2016.11.17 07:11
맞습니다 !!!!
감사 합니다 ^^
깔끔하게 마무리 되었습니다.
꾸~~~~~~~~~~벅 ~~~~~~~~~~~~~~~~~~~~~~