2016-08-04 3 views
1

다음 표가 있습니다.SQL 개수 구별 행

Date Direction Market Time 
    10/17/2016 SB GRUJFK 22:05:00 
    10/18/2016 SB GRUJFK 22:05:00 
    10/19/2016 SB GRUJFK 22:05:00 
    10/20/2016 SB GRUJFK 22:05:00 
    10/21/2016 SB GRUJFK 22:05:00 
    10/23/2016 SB GRUJFK 23:20:00 
    10/23/2016 SB GRUJFK 22:30:00 
    10/24/2016 SB GRUJFK 22:30:00 
    10/25/2016 SB GRUJFK 22:30:00 
    10/26/2016 SB GRUJFK 22:30:00 
    10/27/2016 SB GRUJFK 22:30:00 
    10/28/2016 SB GRUJFK 22:30:00 
I이 경우에만 10/23 너무

Date Direction Market Time Count 
10/17/2016 SB GRUJFK 22:05:00 1 
10/18/2016 SB GRUJFK 22:05:00 1 
10/19/2016 SB GRUJFK 22:05:00 1 
10/20/2016 SB GRUJFK 22:05:00 1 
10/21/2016 SB GRUJFK 22:05:00 1 
10/23/2016 SB GRUJFK 23:20:00 1 
10/23/2016 SB GRUJFK 22:30:00 2 
10/23/2016 SB GRUJFK 23:30:00 3 
10/25/2016 SB GRUJFK 22:30:00 1 
10/26/2016 SB GRUJFK 22:30:00 1 
10/27/2016 SB GRUJFK 22:30:00 1 
10/28/2016 SB GRUJFK 22:30:00 1 

다른 열에 구별 행을 계산하지만 (1..N에서) 반복 행 번호를 순차적으로 할당하고자

/2016에는 3 가지 값이 있습니다. 그래서

Date Direction Market Time Count 
10/17/2016 SB GRUJFK 22:05:00 1 
10/18/2016 SB GRUJFK 22:05:00 1 
10/19/2016 SB GRUJFK 22:05:00 1 
10/20/2016 SB GRUJFK 22:05:00 1 
10/21/2016 SB GRUJFK 22:05:00 1 
10/23/2016 SB GRUJFK 23:20:00 3 
10/23/2016 SB GRUJFK 22:30:00 3 
10/23/2016 SB GRUJFK 23:30:00 3 
10/25/2016 SB GRUJFK 22:30:00 1 
10/26/2016 SB GRUJFK 22:30:00 1 
10/27/2016 SB GRUJFK 22:30:00 1 
10/28/2016 SB GRUJFK 22:30:00 1 

모든 아이디어를 얻을 등, 첫 번째 항목, 두 번째 2에 1을 할당

나는 다음과 같은

select 
     departureDate, 
DIRECTION, LEG, SCHD_LEG_DEP_TM, count(SCHD_LEG_DEP_TM) over (partition by departureDate) 
from table3mirs mirs 
     INNER JOIN sys_calendar.calendar 
     ON calendar_date = mirs.departureDate 

where leg='GRUJFK' 
group by 1,2,3,4 

하지만 시도? 당신의 도움을 주셔서 감사합니다!

답변

1

MSSQL을 사용하는 경우 (파티션을 지정했을 수도 있습니다)이 방법을 시도해보십시오. 그냥 ROW_NUMBER을 필요로하는 것처럼

select 
     departureDate, 
DIRECTION, LEG, SCHD_LEG_DEP_TM, count(DISTINCT SCHD_LEG_DEP_TM) over (partition by departureDate) 
from table3mirs mirs 
     INNER JOIN sys_calendar.calendar 
     ON calendar_date = mirs.departureDate 

where leg='GRUJFK' 
group by 1,2,3,4 
+1

.. 보인다. http://dba.stackexchange.com/questions/89031/using-distinct-in-window-function-with-over – vercelli

0

는 윈도우 함수의 고유 한 카운트 사용할 수 없습니다 AFAIK

SELECT departureDate , 
     DIRECTION , 
     LEG , 
     SCHD_LEG_DEP_TM , 
     ROW_NUMBER() OVER (PARTITION BY departureDate ORDER BY SCHD_LEG_DEP_TM) 
FROM table3mirs mirs 
     INNER JOIN sys_calendar.calendar ON calendar_date = mirs.departureDate 
WHERE leg = 'GRUJFK' 
GROUP BY 1 , 
     2 , 
     3 , 
     4