Comment 12
-
이리
2016.11.16 11:28
-
메아리
2016.11.16 11:31
흐~ 감사 합니다. 그렇군요. 어떻게 해결해야 할지 고민좀 해 보겠습니다. 감사 ^^
-
메아리
2016.11.16 11:35
제가 고민해서 될것 같지가 않네요. 어떻게 풀수가 있을까용, 셀렉터 하고 그룹이 하고 왤케 꼬이는지 ㅠ
-
이리
2016.11.16 11:41
calc_value를 다 봐야 하는건지 아니면 그중에 어떤것만 가져와야 하는지 기준이 필요할거 같네요
-
메아리
2016.11.16 11:55
convert 된 날짜 목록중에서, min 의 날짜에 해당하는 calc_value 하나면 됩니다.
그러니가, 하루에 10 개의 데이터가 있다면, 날짜기준 min 으로해서, 해당 레코드의 calc_value 를 가져오면 됩니다.
즉, 하루에 하나의 데이터만 가져온다는 의미 입니다.
예로
2016-11-16 11:51:48
2016-11-16 11:52:48
2016-11-16 11:53:48
위의 경우2016-11-16 11:51:48 의 값을 가져 오면 됩니다. (하루 하나) -
이리
2016.11.16 13:24
sensor_id 하나만 가져온다면 밑에분 답변처럼 TOP 이랑 ORDER BY를 이용하시면 될거 같고요
여러개를 가져와야 한다면 ROW_NUMBER()를 활용하시면 될 거 같네요
-
호리205
2016.11.16 12:44
제일 간단한건 min 하지 마시고 top(1) 하시고 group by 제거하고 order by는 timestamp로 하시면 될 듯합니다.
-
메아리
2016.11.16 14:25
감사 합니다.
추가로
만약에
2016-11-16 11:51:48
2016-11-16 11:52:48
2016-11-16 11:53:48
2016-11-17 11:51:48
2016-11-17 11:52:48
2016-11-17 11:53:48
위의 경우2016-11-16 11:51:482016-11-17 11:51:48
의 값을 가져 올려면 어케 하면 되는지요쪼금더 조언좀 부탁 합니다. -
이리
2016.11.16 14:34
;WITH TBLX(sensor_id, [timestamp], calc_value)AS(SELECT '000', '2016-11-16 11:51:48', 0.02 UNION ALLSELECT '000', '2016-11-16 11:52:48', 0.01 UNION ALLSELECT '000', '2016-11-16 11:53:48', 0.03 UNION ALLSELECT '054', '2016-11-17 11:51:48', 0.01 UNION ALLSELECT '054', '2016-11-17 11:52:48', 0.02 UNION ALLSELECT '054', '2016-11-17 11:53:48', 0.03)SELECT sensor_id, [timestamp], calc_valueFROM(SELECT ROW_NUMBER() OVER(PARTITION BY sensor_id ORDER BY [timestamp]) AS ROW_NUM, sensor_id, [timestamp], calc_valueFROM TBLX) AS T1WHERE T1.ROW_NUM = 1 -
메아리
2016.11.16 17:21
이리님 멋진답변 감사 드립니다.
굉장히 감사 드리고요
하나가 더 남았는데
만약에
000 2016-11-16 11:51:48
000 2016-11-16 11:52:48
000 2016-11-16 11:53:48
054 2016-11-16 11:51:48
054 2016-11-16 11:52:48
054 2016-11-16 11:53:48
000 2016-11-17 11:51:48
000 2016-11-17 11:52:48
000 2016-11-17 11:53:48
054 2016-11-17 11:51:48
054 2016-11-17 11:52:48
054 2016-11-17 11:53:48
위의 경우000 2016-11-16 11:51:48000 2016-11-17 11:51:48
054 2016-11-16 11:51:48054 2016-11-17 11:51:48
이것입니다. 이렇게 나오는 것입니다죄송 합니다.번거럽게 해 드려서요나름데로 짱돌 굴려 봤는데쉽지가 않습니다 ㅋ여튼 대단히 감사 드립니다 ^^계속 짱돌은 굴려 보겠습니다만 ㅋ혹시나 해서 TBLX 테이블을 만들어 보았습니다 ^^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 -
이리
2016.11.16 17:34
;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 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 = 1PARTITION BY 역할을 응용하시면 됩니다. -
메아리
2016.11.17 07:10
이리님 감사 드립니다 ^^
대단히 감사 합니다 ^^
킹 왕 짱 이십니다 ~~~~~~~~~~~~~~~~~~~~
sensor_id '054'번에 calc_value 값이 다른것들이 있네요
https://msdn.microsoft.com/ko-kr/library/ms177673(v=sql.110).aspx