Member 10226004 Ответов: 2

запрос для получения непрерывного номера строки при выборе результатов по объединению всех


Привет,




Я написал запрос как показано ниже с помощью которого получаю требуемые результаты но столбец Sno
значения не являются непрерывными, например:sno получает результаты от 1 до 50 для первого запроса, а затем снова получает результаты от 1 до 100 с помощью второго запроса, но теперь мне нужен sno как 1 до 150 результатов с непрерывным числом
SELECT ROW_NUMBER() OVER (ORDER BY id desc ) Sno, Id,Title,  from Job as c WITH (NOLOCK)
where  (CountryID=108 and CompanyName='dell')
group by Id, Title, 
union all
SELECT ROW_NUMBER() OVER (ORDER BY id desc ) Sno, Id,Title, from Job as c WITH (NOLOCK)
where  (CountryID!=108 and CompanyName='dell')
group by Id, Title



Пожалуйста, помогите мне, как я могу получить непрерывный номер

2 Ответов

Рейтинг:
2

Maciej Los

Взгляните на пример запроса:

SELECT ROW_NUMBER() OVER (ORDER BY ...) AS Sno
FROM (
    SELECT
    ...
    UNION ALL
    SELECT 
    ...
) AS T
ORDER BY Sno



Примечание: в вашем примере вы пытаетесь получить данные именно таким образом:
WHERE (CountryID=108 OR C***ryID!=108) AND CompanyName='dell'


С логической точки зрения, это плохая идея. Лучше использовать запрос типа:
SELECT ROW_NUMBER() OVER (ORDER BY id desc ) Sno, Id,Title
FROM Job as c WITH (NOLOCK)
WHERE CompanyName='dell'


[РЕДАКТИРОВАТЬ]
Если вы хотите добавить пользовательский заказ, используйте запрос следующим образом:
SELECT ROW_NUMBER() OVER (ORDER BY id desc ) Sno, Id,Title
FROM Job as c WITH (NOLOCK)
WHERE CompanyName='dell'
ORDER BY CASE WHEN CoutryID=108 THEN 0 ELSE CountryID END

[/РЕДАКТИРОВАТЬ]


Member 10226004

я хочу отобразить лучшие результаты companyname=dell и countryid=108, а затем после того, как остальные результаты должны отображаться, так что теперь, пожалуйста, направьте меня, как я могу подойти

Maciej Los

См. обновленный ответ (часть[EDIT]).

Рейтинг:
0

Member 14888320

я должен использовать раздел row_number в первом операторе select, а не во втором операторе select .
Тогда как я могу получить выходные данные


CHill60

Если у вас есть вопрос, то воспользуйтесь красной ссылкой "задать вопрос" в верхней части этой страницы. Обязательно ознакомьтесь с рекомендациями по размещению там.