RANK
및 CTE
검색어에 새로운입니다.테이블 위치 'RANK'> 1에서 삭제
SELECT
*
,ROW_NUMBER() OVER(PARTITION BY name, Product ORDER BY Date desc) AS 'RANK'
FROM
Config
WHERE
Name
IN
(SELECT
name
FROM
Config
GROUP BY
Name
,Product
,Amount
,Date
HAVING
COUNT(name) >1)
AND
Product
IN
(SELECT
Product
FROM
Config
GROUP BY
Name
,Product
,Amount
,Date
HAVING
COUNT(name) >1)
다음은 샘플 결과가 조건을 만족 :
ID|name|Product|Amount|Date |RANK|
---------------------------------------
1 |a |0000 |1 |2015-01-01| 1 |
2 |a |0000 |1 |2015-01-01| 2 |
3 |a |1111 |0 |2015-01-01| 1 |
4 |a |1111 |0 |2015-01-01| 2 |
5 |b |2222 |1 |2015-01-01| 1 |
6 |b |2222 |1 |2015-01-01| 2 |
7 |b |3333 |0 |2015-01-01| 1 |
8 |b |3333 |0 |2015-01-01| 2 |
이 DELETE
RANK > 1
을 만족하는 기록에 가장 좋은 방법은 무엇입니까 다음은 내 쿼리입니다?
하하 !! 당신은 방금 조금 전에 또 다른 질문에 나를 도왔습니다. 마지막 답변에서 논리를 적용 할 수있는 곳을 찾았습니다. 분당 upvote –
''CTE'를'DROP'해야합니까, 아니면 범위를 벗어날 때 자동으로 삭제합니까? –
'CTE'를'DROP '할 필요가 없습니다. 자세한 내용은 https://technet.microsoft.com/en-us/library/ms190766%28v=sql.105%29.aspx#feedback을 참조하십시오. 배울 수있는 좋은 기능입니다! –