Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как склеить две строчки результирующего набора в одну ? / 11 сообщений из 11, страница 1 из 1
04.12.2014, 14:25
    #38824893
ProBiotek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как склеить две строчки результирующего набора в одну ?
Есть два запроса, которые возвращают ID пользователя и его параметры.
В итоге выводится так:

Код: sql
1.
2.
3.
4.
5.
ID  param
1   '1'
1   '2'
2  '1'
3  '2'



в param может быть строго либо 1 либо 2 либо 1/2 (если нет ничего, то такое просто в запрос не попадет).


Вопрос. Как сделать, чтобы вывод был

Код: sql
1.
2.
3.
4.
ID  param
1   '1/2'
2  '1'
3  '2'



Спасибо !
...
Рейтинг: 0 / 0
04.12.2014, 14:30
    #38824902
icprog
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как склеить две строчки результирующего набора в одну ?
ProBiotek,

FAQ
...
Рейтинг: 0 / 0
04.12.2014, 14:34
    #38824913
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как склеить две строчки результирующего набора в одну ?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT id
, CAST(CASE SUM(/* DISTINCT*/ CAST(param AS INT)) 
       WHEN 1 THEN '1'
       WHEN 2 THEN '2'
       WHEN 3 THEN '1/2'
       END 
       AS CHAR(3)
      )param
FROM MyQuery
GROUP BY id
...
Рейтинг: 0 / 0
04.12.2014, 14:35
    #38824918
ProBiotek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как склеить две строчки результирующего набора в одну ?
icprog,

хм... Все решения через создание процедуры ?
А через простой SQL можно ?
...
Рейтинг: 0 / 0
04.12.2014, 14:35
    #38824919
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как склеить две строчки результирующего набора в одну ?
Упс... внешний каст не нужен же ж...
...
Рейтинг: 0 / 0
04.12.2014, 14:38
    #38824926
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как склеить две строчки результирующего набора в одну ?
ProBiotekicprog,

хм... Все решения через создание процедуры ?
А через простой SQL можно ?

где там "через создание процедуры", вы точно прочитали faq?
...
Рейтинг: 0 / 0
04.12.2014, 14:40
    #38824928
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как склеить две строчки результирующего набора в одну ?
ProBiotekicprog,

хм... Все решения через создание процедуры ?
А через простой SQL можно ?

Смотрите ссылку ещё раз.
...
Рейтинг: 0 / 0
04.12.2014, 14:43
    #38824937
ProBiotek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как склеить две строчки результирующего набора в одну ?
Akina
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT id
, CAST(CASE SUM(/* DISTINCT*/ CAST(param AS INT)) 
       WHEN 1 THEN '1'
       WHEN 2 THEN '2'
       WHEN 3 THEN '1/2'
       END 
       AS CHAR(3)
      )param
FROM MyQuery
GROUP BY id



О !! гениально.
Спасибо !
...
Рейтинг: 0 / 0
04.12.2014, 14:48
    #38824943
Jovanny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как склеить две строчки результирующего набора в одну ?
Код: sql
1.
2.
3.
4.
5.
WITH S AS 
(SELECT * FROM (VALUES(1, '1'), (1, '2'), (2, '1'), (3, '2')) AS T(ID, param))
SELECT DISTINCT ID, LEFT(P.C, LEN(P.C) - 1) FROM S CROSS APPLY (SELECT T.param + '/' AS 'text()'
		  FROM S AS T WHERE T.ID = S.ID
		  FOR XML PATH ('')) AS P(C)
...
Рейтинг: 0 / 0
04.12.2014, 14:51
    #38824950
ProBiotek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как склеить две строчки результирующего набора в одну ?
Jovanny
Код: sql
1.
2.
3.
4.
5.
WITH S AS 
(SELECT * FROM (VALUES(1, '1'), (1, '2'), (2, '1'), (3, '2')) AS T(ID, param))
SELECT DISTINCT ID, LEFT(P.C, LEN(P.C) - 1) FROM S CROSS APPLY (SELECT T.param + '/' AS 'text()'
		  FROM S AS T WHERE T.ID = S.ID
		  FOR XML PATH ('')) AS P(C)



Мне кажется вариант через CASE выше гораздо понятней и проще :)
...
Рейтинг: 0 / 0
04.12.2014, 14:54
    #38824954
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как склеить две строчки результирующего набора в одну ?
ProBiotekМне кажется вариант через CASE выше гораздо понятней и проще :)
Точно. Особенно для данных вида

ID param
1 '1'
1 'A'
2 'B'
3 'C'
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как склеить две строчки результирующего набора в одну ? / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]