2017-02-14 1 views
3

datetime, value 및 user가있는 테이블이 있습니다. 이 테이블에는 동일한 datetime이지만 사용자와 값이 다른 여러 행이 있습니다.SQL - 선택할 중복 값을 선택하십시오.

해당 값과 사용자로 고유 한 datetime을 선택하고 싶습니다. 사용자가 다른 중복 datetime이있는 경우 user2가 입력 한 값에 우선 순위를 지정해야합니다.

 
Table 1 
----------------- 
DateTime| Value| User 
--------|---------|--------- 
1/1/17 |  10| User1 
2/1/17 |  30| User1 
3/1/17 |  10| User1 
1/1/17 |  90| User2 
2/1/17 |  80| User2  

그래서 위에서, 나는이에 대한 간단한 대답이 확신

 
1/1/17 |  90| User2 
2/1/17 |  80| User2 
3/1/17 |  10| User1 

로 끝날 것입니다하지만 난 내 인생을 위해 할 방법을 작동하지 않을 수 있습니다 그것!

도움을 주시면 감사하겠습니다.

감사합니다.

+0

어떻게 u는 날짜 2/1/17에 대한 80 GT는 않았다? –

+0

미안하지만 오타가 90입니다. 업데이트됩니다. –

답변

2

간단하지 않습니다! 'User1''User3'에서 입력이 경우에도 윈도우 기능과 공통 테이블을 사용하면,

; with x as (
select [DateTime], value, [User], row_num = row_number() over(partition by [DateTime] order by [User] desc) from Table1 
) 
select x.* from x where row_num = 1 
+0

이것은 'User2'> 'User1'을 사용하며,보다 일반적인 설정에서는 order by 절이 달라졌을 것입니다. –

0
DECLARE @T as table 
(
    [DateTime] nvarchar(100), 
    VALUE INT, 
    [USER] VARCHAR(32) 
) 

INSERT INTO @T 
VALUES 
('1/1/17', 10, 'User1'), 
('2/1/17', 30, 'User1'), 
('3/1/17', 10, 'User1'), 
('1/1/17', 90, 'User2'), 
('2/1/17', 80, 'User2') 

SELECT t.[DateTime], t.VALUE, t.[USER] 
FROM @T t 
    JOIN (
     SELECT [DateTime], MAX([USER]) AS [USER] 
     FROM @T 
     GROUP BY [DateTime] 
    ) u ON u.[DateTime] = t.[DateTime] AND u.[USER] = t.[USER] 
ORDER BY VALUE DESC 
0
;with cte 
as 
(
select 
*, 
row_number() over (partition by date order by replace(user,'user','') desc) as rownum 
from 
#temp 
) 
select * from cte where rownum=1 
2

이 항상 'User2'의 입력의 우선 순위를됩니다 식입니다.

;with cte as (
    select * 
    , rn = row_number() over (
     partition by [DateTime] 
     order by (case when [user] = 'User2' then 0 else 1 end) asc 
    ) 
    from t 
) 
select * 
from cte 
where rn=1 

rextester http://rextester.com/AZVA85684

결과 :

+----------+-------+-------+----+ 
| DateTime | value | user | rn | 
+----------+-------+-------+----+ 
| 1/1/17 | 90 | User2 | 1 | 
| 2/1/17 | 80 | User2 | 1 | 
| 3/1/17 | 10 | User1 | 1 | 
+----------+-------+-------+----+ 
관련 문제