Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 узнать номер строки  [new]
Евгенич
Member

Откуда:
Сообщений: 274
есть таблица

create table gas_client (ClientID int)
insert into gas_client values (12287)
insert into gas_client values (12900)
insert into gas_client values (12950)
insert into gas_client values (12960)
insert into gas_client values (12984)
 


Запрос вида
select * from gas_client order by ClientID

вернет:
1  12287
2  12900
3  12950
4  12960
5  12984


Первый столбец это номера строк в результирующей таблице
Как изменить запрос
select * from gas_client  where ClientID=12960  order by ClientID


чтобы тупо узнать, что номер строки, удовлетворяющей данному условию, это номер 4

Извиняюсь, что вопрос может быть не четко сформулирован. MS SQL 2000
9 апр 13, 15:10    [14156971]     Ответить | Цитировать Сообщить модератору
 Re: узнать номер строки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Евгенич
Первый столбец это номера строк в результирующей таблице

Этот столбец существует только в вашем клиентском приложении
9 апр 13, 15:12    [14156977]     Ответить | Цитировать Сообщить модератору
 Re: узнать номер строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
SELECT (SELECT COUNT(*) FROM gas_client TT WHERE TT.ClientID<=T.ClientID) N, T.ClientID
FROM gas_client T
ORDER BY T.ClientID;
9 апр 13, 15:16    [14157014]     Ответить | Цитировать Сообщить модератору
 Re: узнать номер строки  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Glory
Евгенич
Первый столбец это номера строк в результирующей таблице

Этот столбец существует только в вашем клиентском приложении


Данные в эту таблицу попадают всегда отсортированными, поэтому для всех клиентских приложений это будет 4 строка, или я не прав?
9 апр 13, 15:20    [14157054]     Ответить | Цитировать Сообщить модератору
 Re: узнать номер строки  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
declare @t table (ClientID int)
insert into @t values (12287)
insert into @t values (12900)
insert into @t values (12950)
insert into @t values (12960)
insert into @t values (12984)

select row_number() over (order by ClientId),* from @t order by ClientID

;with CTE as
(select RN = row_number() over (order by ClientId),* from @t)

select * from CTE  where ClientID=12960
9 апр 13, 15:20    [14157057]     Ответить | Цитировать Сообщить модератору
 Re: узнать номер строки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Евгенич
Данные в эту таблицу попадают всегда отсортированными, поэтому для всех клиентских приложений это будет 4 строка, или я не прав?

В таблице нет понятия номер строки.
Выбираемые запросом данные могут упорядочиваться по-разному.
9 апр 13, 15:22    [14157078]     Ответить | Цитировать Сообщить модератору
 Re: узнать номер строки  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
Евгенич,

select * from gas_client order by ClientID


Order by Это кляуза сортировки
declare @t table (ClientID int)
insert into @t values (12287)
insert into @t values (12900)
insert into @t values (12950)
insert into @t values (12960)
insert into @t values (12984)

;with CTE as
(select RN = row_number() over (order by ClientId),* from @t)

select * from CTE  where ClientID=12960

insert into @t values (12945)

;with CTE as
(select RN = row_number() over (order by ClientId),* from @t)

select * from CTE  where ClientID=12960
9 апр 13, 15:23    [14157084]     Ответить | Цитировать Сообщить модератору
 Re: узнать номер строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
angel_zar
declare @t table (ClientID int)
insert into @t values (12287)
insert into @t values (12900)
insert into @t values (12950)
insert into @t values (12960)
insert into @t values (12984)

select row_number() over (order by ClientId),* from @t order by ClientID

;with CTE as
(select RN = row_number() over (order by ClientId),* from @t)

select * from CTE  where ClientID=12960
Евгенич
MS SQL 2000
9 апр 13, 15:24    [14157102]     Ответить | Цитировать Сообщить модератору
 Re: узнать номер строки  [new]
Евгенич
Member

Откуда:
Сообщений: 274
iap
SELECT (SELECT COUNT(*) FROM gas_client TT WHERE TT.ClientID<=T.ClientID) N, T.ClientID
FROM gas_client T
ORDER BY T.ClientID;


Это то, что я и хотел, но никак не пойму как работает!!!
9 апр 13, 15:29    [14157144]     Ответить | Цитировать Сообщить модератору
 Re: узнать номер строки  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
iap,

Ну да не досмотрел.
И все же надо понять, что нужно топикастеру, скорее всего, он просит сам не понимая чего.
9 апр 13, 15:30    [14157157]     Ответить | Цитировать Сообщить модератору
 Re: узнать номер строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Евгенич
iap
SELECT (SELECT COUNT(*) FROM gas_client TT WHERE TT.ClientID<=T.ClientID) N, T.ClientID
FROM gas_client T
ORDER BY T.ClientID;



Это то, что я и хотел, но никак не пойму как работает!!!
Для каждого ClientID подсчитывается количество не больших ClientID.
Представьте, что Вы стоите в очереди за хлебом.
Какой у Вас на руке нарисовать номер?
Этот номер - количество людей в очереди перед Вами плюс Вы сами
9 апр 13, 15:35    [14157196]     Ответить | Цитировать Сообщить модератору
 Re: узнать номер строки  [new]
Евгенич
Member

Откуда:
Сообщений: 274
iap
Евгенич
пропущено...


Это то, что я и хотел, но никак не пойму как работает!!!
Для каждого ClientID подсчитывается количество не больших ClientID.
Представьте, что Вы стоите в очереди за хлебом.
Какой у Вас на руке нарисовать номер?
Этот номер - количество людей в очереди перед Вами плюс Вы сами


Спасибо, понял!
9 апр 13, 16:11    [14157549]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить