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

Откуда:
Сообщений: 14
Добрый день и всех с прошедшими!!!

Имеется таблица с данными? вида:
customid num
5812123
5812124
5812125
5813127
5813789
5813782


необходимо вывести, либо первое значение ответствующее customid, либо второе и тд. И так для всех customid.

искал по этому поводу решения, дошел до такого, что получаю таблицу вида

customid num rownumber
5812 1231
5812 124 2
5812 125 3
5813 127 1
5813 789 2
5813 7823


select customid, num,
ROW_NUMBER() OVER(partition BY customid order by customid) AS RowNumber
FROM [database].[dbo].[table]

как бы из этой таблицы вычленить rownumber =1/2/3??)

вариант с созданием временной таблицы не подходит.

ЗЫ
Для чего мне все это нужно?

Необходимо, чтобы запись в таблице выглядела след образом
customid num1num2num3
5812123124125
5813127 789782


Вот я и решил, что если смогу вычленить по отдельности rownumber? то потом в итоговой таблице смогу присоединить эти значения через left join
11 янв 16, 16:52    [18663395]     Ответить | Цитировать Сообщить модератору
 Re: выбор в опредленнлом порядке  [new]
Glory
Member

Откуда:
Сообщений: 104760
roman456
необходимо вывести, либо первое значение ответствующее customid, либо второе и тд. И так для всех customid.

И кто должен решить это "либо ... либо" ?

roman456
Необходимо, чтобы запись в таблице выглядела след образом
customid num1num2num3
5812123124125
5813127 789782

А если у одного customid будет 100500 разных num ?
11 янв 16, 16:55    [18663423]     Ответить | Цитировать Сообщить модератору
 Re: выбор в опредленнлом порядке  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
roman456,

дак заверните ваш запрос с row_number в pivot и готово.
11 янв 16, 17:01    [18663462]     Ответить | Цитировать Сообщить модератору
 Re: выбор в опредленнлом порядке  [new]
roman456
Member

Откуда:
Сообщений: 14
Glory,

для каждого customid num не более 6.
и необходимо выбрать все.

возможно я выбрал оч корявый способ решения данного вопроса.

но конечная цель, это представление данных в виде

customid num1 num2 num3
5812 123 124 125
5813 127 789 782
11 янв 16, 17:02    [18663468]     Ответить | Цитировать Сообщить модератору
 Re: выбор в опредленнлом порядке  [new]
roman456
Member

Откуда:
Сообщений: 14
WarAnt,

как раз читаю про данный оператор.

если не лень, то расскажите по подробнее
11 янв 16, 17:04    [18663477]     Ответить | Цитировать Сообщить модератору
 Re: выбор в опредленнлом порядке  [new]
Glory
Member

Откуда:
Сообщений: 104760
roman456
и необходимо выбрать все.

То у вас "выбрать все", то "либо либо"

roman456
но конечная цель, это представление данных в виде

customid num1 num2 num3
5812 123 124 125
5813 127 789 782

Это называется PIVOT
11 янв 16, 17:04    [18663479]     Ответить | Цитировать Сообщить модератору
 Re: выбор в опредленнлом порядке  [new]
roman456
Member

Откуда:
Сообщений: 14
Glory,
проблема в том, что при обращении к [1],[2],[3],[4] rownumber происходит ошибка, т.к. эти данные не записаны в таблице
12 янв 16, 10:51    [18665638]     Ответить | Цитировать Сообщить модератору
 Re: выбор в опредленнлом порядке  [new]
Glory
Member

Откуда:
Сообщений: 104760
roman456
проблема в том, что при обращении к [1],[2],[3],[4] rownumber происходит ошибка, т.к. эти данные не записаны в таблице

Ну так напишите такой запрос, который не будет выдавать эту ошибку
12 янв 16, 11:06    [18665717]     Ответить | Цитировать Сообщить модератору
 Re: выбор в опредленнлом порядке  [new]
roman456
Member

Откуда:
Сообщений: 14
Glory,

я бы с радостью. я это и пытаюсь сделать.


SELECT customID,[1],[2],[3],[4]
FROM
(
select customID, num,
ROW_NUMBER() OVER (partition BY customID order by customID) AS RowNumber
FROM [base].[dbo].[table]
)p
PIVOT
count (customID)
FOR RowNumber
IN [1],[2,],[3],[4])pvt
)
12 янв 16, 11:11    [18665746]     Ответить | Цитировать Сообщить модератору
 Re: выбор в опредленнлом порядке  [new]
Glory
Member

Откуда:
Сообщений: 104760
roman456
я бы с радостью. я это и пытаюсь сделать.

И вы также прочитали сообщение об ошибке ?
Неужели так трудно взять пример из хелпа и всего лишь поменять в нем название полей на свои ?
12 янв 16, 11:18    [18665797]     Ответить | Цитировать Сообщить модератору
 Re: выбор в опредленнлом порядке  [new]
roman456
Member

Откуда:
Сообщений: 14
Glory,

SELECT customID, [1],[2],[3],[4]
FROM
(
SELECT customID, num,
ROW_NUMBER() OVER (partition BY customID order by customID) AS RowNumber
FROM [base].[dbo].[table])p
PIVOT
(
min (num)
FOR RowNumber IN
([1],[2],[3],[4])
) AS pvt

спс, разобрался.
оставлю здесь свой кривой, но рабочий запрос.
12 янв 16, 12:02    [18666091]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить