2016-08-22 3 views
-1

수행 방법 쿼리를 작성하여 스크린 샷에 표시된대로 수행합니다. FACode 무엇Row_number 함수 sql

Select 
    ROW_NUMBER() over (Partition by R.BrandName,R.Description,R.City order by R.ProdDateTime DESC) as ID, 
    R.BrandName, 
    R.Description, 
    R.City 
FROM Table R 
+0

아래의 스크립트를 시도

은 ...''IDENTITY' 열을 대신 할 수는 없습니다 : 런타임시 생성되며 단일 결과 테이블의 범위를 벗어난 어떤 방식 으로든 고유하지 않습니다. – Dai

답변

0

을 나는 당신이 그렇게 (DENSE_RANK 사용하는 경우 대신 ROW_NUMBER의) 있습니다 .. maching 행에 의해 gruop 및 증분 순서로 동일한 번호를 제공해야 할 필요가 있다고 생각합니다(). 당신은 더 나은 (`IDENTITY`을 의미) ID``보다는 이름 ROW_NUMBER`때문에()를 선택해야

--creating a sample table 
CREATE TABLE dbo.GroupSet 
(ProdDateTime DATETIME, 
BrandName VARCHAR(50), 
[Description] VARCHAR(50), 
City VARCHAR(10)) 

--populatinng data 
INSERT INTO GroupSet 
VALUES ('2016-06-15 16:10:03.000','13856.11','POL','Ak') 
     ,('2016-06-15 14:56:05.000','13856.11','POL','Ak') 
     ,('2016-06-15 15:58:22.000','13856.11','POL','Ak') 
     ,('2016-05-04 01:02:50.000','30205.18','MUR','Ak') 
     ,('2016-05-03 02:15:10.000','30205.18','MUR','Ak') 
     ,('2016-05-03 04:23:10.000','30205.18','MUR','Ak') 
     ,('2016-05-03 03:32:10.000','30205.18','MUR','Ak') 
     ,('2016-06-03 15:31:20.000','30205.18','MUR','Ak') 

--Here is the script and the result you wanted to be in the column ID_DenseRank 
SELECT 
    ROW_NUMBER() over (PARTITION BY R.BrandName, R.City order by R.City, R.BrandName) as ID_RNO, -- ROW_NUMBER() result 
    DENSE_RANK() over (order by R.BrandName, R.City) as ID_DenseRank, -- DENSE_RANK() result 
    R.ProdDateTime, 
    R.BrandName, 
    R.[Description], 
    R.City 
FROM GroupSet R 
+0

시도했는데 모든 행에 ID가 '1'이됩니다. – Salta

+0

업데이트 된 코드를 사용해보십시오. 나는 당신의 데이터를 가지고 시험해 보았다. 내 쿼리의 "ID_denseRank"열은 필요한 시퀀스를 제공합니다. 결과 집합에 차이를 표시하기 위해 row_number도 포함했습니다. –

+0

대단히 감사합니다 !!!! – Salta

0

을 만들 ROW_NUMBER 함수를 사용? 당신이 BrandName에 의해 파티션을 원하는 것 같습니다. 이 시도 :

ROW_NUMBER() over (Partition by BrandName order by R.City) as ID 
0

입니다 :

나는이 시도 ID

Select ROW_NUMBER() over (Partition by R.BrandName, R.City order by R.City, R.BrandName) as ID, 

query result

+0

'FACode'는 'BrandName'이고, 그 것을 잊어 버렸습니다 – Salta

+0

시도해보십시오. 이것은 당신을 위해 잘 작동합니다. –

+0

이전 쿼리와 동일한 결과를 표시합니다. – Salta