2016-08-22 2 views
-1

Как сделать запрос, чтобы он отображался на скриншоте.Row_number function sql

Я использовал функцию row_number создать ID колонку

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

query result

+0

Вы должны выбрать лучшее название, чем 'ID' (что означает' IDENTITY'), потому что 'ROW_NUMBER()' не является заменой для 'колонны IDENTITY' : он генерируется во время выполнения и ничем не отличается от объема одной таблицы результатов. – Dai

ответ

0

Я думаю, что вам нужно тентовых по Maching строк и должны давать одинаковое число в инкрементного порядке .. если так использовать DENSE_RANK() вместо 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

Я попробовал его, и он дает «1» как ID всем строкам – Salta

+0

Попробуйте обновленный код. Я попытался с вашими данными. Столбец «ID_denseRank» моего запроса предоставит вам необходимую последовательность. Я также включил ваш row_number для отображения разницы в наборе результатов. –

+0

Большое спасибо !!!! – Salta

0

Попробуйте:

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

Что такое FACode? Кажется, вам нужен раздел по BrandName. Попробуйте это:

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

«FACode» - это «BrandName», я забыл изменить это. – Salta

+0

Тогда попробуйте. Это должно сработать для вас. –

+0

показывает тот же результат, что и предыдущий запрос – Salta