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

Откуда: Москва
Сообщений: 8
Всем день добрый.

У меня такой вопрос, как проще всего без использования функций и прочего, получить составное поле, из выборки?

Выборка происходит из нескольких таблиц, связанных между собой union, примерно такого вида:

select ID_C, PREDP, INV_N...from T1
union
select ID_C, PREDP, INV_N...from T2
union
select ID_C, PREDP, INV_N...from T3
...

результирующая выборка выглядит примерно так:

ID_C PREDP INV_N
2383 Заказчик 12660
2383 Владелец лицензии 12660
2530 Владелец лицензии 12582
2530 Заказчик 12582

И вот как проще всего привести ее к виду:

ID_C PREDP INV_N
2383 Заказчик, Владелец лицензии 12660
2530 Заказчик, Владелец лицензии 12582

Заранее спасибо за ответ.
29 окт 12, 10:41    [13389099]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
Glory
Member

Откуда:
Сообщений: 104751
rekly_ru
, как проще всего без использования функций и прочего, получить составное поле

С такими ограничениями - никак
29 окт 12, 10:43    [13389114]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
rekly_ru
Member

Откуда: Москва
Сообщений: 8
Glory
С такими ограничениями - никак


Т.е. обычным select'ом получить такое не удастся никак?
29 окт 12, 10:52    [13389170]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
Glory
Member

Откуда:
Сообщений: 104751
rekly_ru
Т.е. обычным select'ом получить такое не удастся никак?

"без использования функций и прочего, получить" - никак
29 окт 12, 10:53    [13389176]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
rekly_ru,

Может постановка задачи не точная?

2383 Заказчик 12660
2383 Владелец лицензии 12660

Вы можете выбрать только Заказчиков и к ним LEFT JOIN Владелец лицензии ?
29 окт 12, 10:59    [13389219]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
rekly_ru
Member

Откуда: Москва
Сообщений: 8
trew, дело в том, что Заказчик и Владелец лицензии в конечно итоге должны оказаться в одном поле через запятую "Заказчик, Владелец лицензии"...
29 окт 12, 11:04    [13389257]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
Sekoka
Member

Откуда:
Сообщений: 73
SELECT *
FROM
(
select ID_C, PREDP, INV_N...from T1
union
select ID_C, PREDP, INV_N...from T2
union
select ID_C, PREDP, INV_N...from T3
) as TN
WHERE TN.PREDP='Заказчик'
29 окт 12, 11:17    [13389353]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
Sekoka
Member

Откуда:
Сообщений: 73
Сорри, не пойдет, не дочитал до конца
29 окт 12, 11:21    [13389380]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
rekly_ru,

Напишите, для начала, запрос который выбрает только Заказчиков.
29 окт 12, 11:55    [13389657]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
trew
rekly_ru,

Может постановка задачи не точная?

2383 Заказчик 12660
2383 Владелец лицензии 12660

Вы можете выбрать только Заказчиков и к ним LEFT JOIN Владелец лицензии ?


rekly_ru
trew, дело в том, что Заказчик и Владелец лицензии в конечно итоге должны оказаться в одном поле через запятую "Заказчик, Владелец лицензии"...


ну так после того как сделаете то, что предложил trew в select соедините заказчика и владельца лицензии оператором "+"
29 окт 12, 11:59    [13389687]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
rekly_ru
Member

Откуда: Москва
Сообщений: 8
HandKot, все, теперь я понял о чем идет речь))
Большое спасибо за помощь))
29 окт 12, 12:14    [13389793]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
Добрый Э - Эх
Guest
select ID_C, min(PREDP) +',' + max(PREDP) as x_PREDP, INV_N
from (select ID_C, PREDP, INV_N...from T1
union
select ID_C, PREDP, INV_N...from T2
union
select ID_C, PREDP, INV_N...from T3)
group by INV_N,INV_N
29 окт 12, 12:23    [13389843]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
rekly_ru
Member

Откуда: Москва
Сообщений: 8
Добрый Э - Эх, а как быть с ситуацией, если PREDP может состоять из трех разных значений?
29 окт 12, 13:43    [13390519]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
rekly_ru
Добрый Э - Эх, а как быть с ситуацией, если PREDP может состоять из трех разных значений?

в запросе от Добрый Э - Эх, я вижу другую проблему, почему именно MIN и MAX - не факт, что получится то, что требуется
либо что-то мудрить с полем PREDP
29 окт 12, 14:01    [13390740]     Ответить | Цитировать Сообщить модератору
 Re: Как получить составное поле?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
rekly_ru
Добрый Э - Эх, а как быть с ситуацией, если PREDP может состоять из трех разных значений?
Что задаёт порядок при формировании строк?
29 окт 12, 14:01    [13390741]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить