원래 테이블에 저장된 값은 다음과 같습니다.
select * from tb_stat_real_stay where convert(char(6), input, 12) = convert(char(6), getdate(), 12) order by input asc;
input app_id stair stay status
2009-07-03 00:01:08.997 1 1 1 0
2009-07-03 00:04:46.473 3 1 0 1
2009-07-03 00:06:49.560 1 1 0 0
2009-07-03 00:08:15.103 2 2 0 1
2009-07-03 00:08:42.043 2 2 0 1
2009-07-03 00:08:56.980 2 2 0 1
2009-07-03 00:09:01.307 2 2 0 1
2009-07-03 00:09:08.603 1 1 0 1
2009-07-03 00:10:02.090 1 1 0 1
2009-07-03 00:10:18.103 2 2 0 0
2009-07-03 00:10:27.527 2 2 0 1
2009-07-03 00:10:45.200 3 1 0 0
2009-07-03 00:10:59.990 3 1 0 0
2009-07-03 00:11:04.323 1 1 0 0
2009-07-03 00:11:11.700 3 1 0 0
2009-07-03 00:12:05.150 2 2 0 0
2009-07-03 00:12:30.497 3 1 0 0
2009-07-03 00:16:51.277 1 1 1 0
.
.
.
.
.
.
제가 해본 쿼리는 아래와 같습니다.
select app_id, count(app_id) as count, stair, stay, status from tb_stat_real_stay
where convert(char(6), input, 12) = convert(char(6), getdate(), 12)
group by app_id, stair, stay, status;
위와 같은 문장을 실행하면, 아래와 같은 결과가 나옵니다.
참고로, 'app_id'와 'stair' 값은 정해져 있습니다. 즉,
app_id(노드 ID)는 'stair(층 정보)'에 하나 밖에 없으므로
app_id가 다른 'stair(층)'에 존재하지 않습니다.
------------------------------------------
app_id count stair(층) stay(주차) status(상태 : 단시간 주차 유무 혹은 장시간 주차 유무)
------------------------------------------
1 7 1 0 0
1 4 1 0 1
1 3 1 1 0
1 6 1 1 1
2 8 2 0 0
2 6 2 0 1
2 5 2 1 0
2 3 2 1 1
3 2 1 0 0
3 4 1 0 1
3 5 1 1 0
3 2 1 1 1
위의 결과 중에서 'app_id' 필드가 동일한 항목에 대해서
'count' 필드에 있는 값을 합(SUM)하여 아래와 같은 결과를
구하고 싶습니다. 즉, 결과는 아래와 같이 나왔으면 합니다.
-------------------------------------------------------------------------------------------------
app_id total stair stay_staus_00_cnt stay_staus_01_cnt stay_staus_10_cnt stay_staus_10_cnt
(전체개수) (층정보) (stay:0, status:0) (stay:0, status:1) (stay:1, status:0) (stay:1, status:1)
------------------------------------------------------------------------------------------------------
1 20 1 7 4 3 6
2 22 2 8 6 5 3
3 13 1 2 4 5 2
맨 위의 쿼리를 좀더 보완해 주십사 하고요
혹은 다른 방법이 있으시면, 작성 부탁 드립니다. |