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

Откуда:
Сообщений: 116
есть данные в табл на рис.

при условии что glhip_app_id и elhyp_app_id is not null выводить необходимо

CFO_ID hyp_app
18332 40
18332 30

иначе только данные где нет null значения

select cfo_id, glhip_app_id,elhyp_app_id from table 1 


К сообщению приложен файл. Размер - 26Kb
9 июл 18, 11:23    [21555423]     Ответить | Цитировать Сообщить модератору
 Re: как развернуть строку в столбец при условиии  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Romanov-krd,

WITH x(CFO_ID, glhip_app_id,elhyp_app_id ) AS (SELECT 18332, 40, 30)

SELECT x.CFO_ID, y.hyp_app
FROM x
CROSS APPLY 
(
	SELECT 	x.glhip_app_id
	UNION ALL
	SELECT 	x.elhyp_app_id	
) y (hyp_app)
WHERE 
	x.glhip_app_id IS NOT NULL	AND		
	x.elhyp_app_id IS NOT NULL	

можно и просто cross на 2 значения
9 июл 18, 11:28    [21555452]     Ответить | Цитировать Сообщить модератору
 Re: как развернуть строку в столбец при условиии  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
Romanov-krd,

 select cfo_id,hyp_app
   from table1 
unpivot (hyp_app for app_id in (glhip_app_id,elhyp_app_id)) u
  where hyp_app is not null 
9 июл 18, 11:36    [21555490]     Ответить | Цитировать Сообщить модератору
 Re: как развернуть строку в столбец при условиии  [new]
Romanov-krd
Member

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

А что можно сделать если к примеру в столбцах много значений и данные из нескольких таблиц джойнятся.
К примеру проверяю по 1 cfo_id нормально работает, если по двум то уже получается 18 записей

К сообщению приложен файл. Размер - 146Kb
9 июл 18, 16:06    [21556777]     Ответить | Цитировать Сообщить модератору
 Re: как развернуть строку в столбец при условиии  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
Romanov-krd,
для начала, вы путаете cross join с cross apply
9 июл 18, 16:21    [21556830]     Ответить | Цитировать Сообщить модератору
 Re: как развернуть строку в столбец при условиии  [new]
Romanov-krd
Member

Откуда:
Сообщений: 116
Посетитель,
я запросы пишу в teradata там нет cross apply
10 июл 18, 08:16    [21558222]     Ответить | Цитировать Сообщить модератору
 Re: как развернуть строку в столбец при условиии  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
Romanov-krd,

...и по вашей логике получается, если задавать вопросы по teradata на форуме MS, то можно заменять несуществующие операторы на схожие по звучанию безотносительно их функциональности?


ЗЫ. посмотрите решение с unpivot, в гугле пишут, он хотя бы есть в teradata, правда

Google
Teradata supports UNPIVOT in TD16, but the syntax it's closer to Oracle than to SQL Server.
10 июл 18, 08:28    [21558232]     Ответить | Цитировать Сообщить модератору
 Re: как развернуть строку в столбец при условиии  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
WITH x(CFO_ID, glhip_app_id,elhyp_app_id ) AS (SELECT 18332, 40, 30)

SELECT x.CFO_ID, 
case y.hyp_app When 1 Then x.glhip_app_id Else x.elhyp_app_id End 
FROM x
CROSS APPLY 
(
	SELECT 	1 as hyp_app
	UNION ALL
	SELECT 	0 
) y
WHERE 
	x.glhip_app_id IS NOT NULL	AND		
	x.elhyp_app_id IS NOT NULL	
10 июл 18, 09:24    [21558317]     Ответить | Цитировать Сообщить модератору
 Re: как развернуть строку в столбец при условиии  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
Cross Join вместо Cross Apply
10 июл 18, 09:25    [21558320]     Ответить | Цитировать Сообщить модератору
 Re: как развернуть строку в столбец при условиии  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Kopelly,

та хоть просто INNER JOIN :)
10 июл 18, 09:32    [21558335]     Ответить | Цитировать Сообщить модератору
 Re: как развернуть строку в столбец при условиии  [new]
Посетитель
Member

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

on 1=1?

или в этой ихней терадате можно inner join без условий делать?
10 июл 18, 09:33    [21558337]     Ответить | Цитировать Сообщить модератору
 Re: как развернуть строку в столбец при условиии  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Посетитель
TaPaK,

on 1=1?

или в этой ихней терадате можно inner join без условий делать?

2=2
10 июл 18, 09:34    [21558339]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить