SELECT userid, convert(varchar,serverRecordTime,23) auth_date , count(*) auth_count
FROM ngac_authlog
WHERE terminalid in (119,120,121) and authResult = 0 and convert(varchar(7),serverRecordTime,23) = '2014-03'
GROUP BY userid, convert(varchar,serverRecordTime,23)
이런 쿼리 문이 있는데요 여기 서 select 구문에 terminalid 라는 컬럼을 추가 하고 싶은데요
그러닌깐 결론는 userid 의 terminalid를 가져오는게 목표입니다.
원하는 값
userid auth_date auth_count terminalid
00013803 2014-03-03 2 1
00013846 2014-03-03 1 1
00013851 2014-03-03 1 2
00013853 2014-03-03 3 3
00013855 2014-03-03 2 4
00013856 2014-03-03 1 5
00013805 2014-03-04 1 2
00013809 2014-03-04 1 3
00013821 2014-03-04 3 3
이런 식으로 가져오는게 목표 입니다 .
terminalid 를 gruop 절에 추가 하지 않은 이유는
00013803 2014-03-03 2 1
00013803 2014-03-03 2 2
00013803 2014-03-03 2 3
이런씩으로 데이터가 누적으로 쌓여서 terimnalid 를 빼습니다
00013803 2014-03-03 2 2
00013803 2014-03-03 2 3
이런씩으로 데이터가 누적으로 쌓여서 terimnalid 를 빼습니다
만약 추가한다면 터미널 별로 또 group by가 이루어저 원하는 결과값이 다르게 나오닌깐요ㅜㅜ
가져 오는 방법이 없을까요 선배님들 조언좀 부탁드립니다 ㅜ
Comment 1
-
항해자™
2014.03.12 14:07
원시 데이터를 첨부해 주셔야,,, 원하는 결과에 대한 코드를 생각해 볼수 있겠네요;;
SELECT
userid
,DATEADD(day,DATEDIFF(day,0,serverRecordTime),0) as auth_date
,COUNT(*) as auth_count
,MAX(terminalid) as terminalid
FROM dbo.ngac_authlog
WHERE terminalid in (119,120,121)
AND authResult = 0
AND serverRecordTime between '2014-03-01 00:00' and '2014-03-01 23:59:59.998'
GROUP BY
userid
,DATEDIFF(day,0,serverRecordTime)