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

Откуда:
Сообщений: 4599
with t as (
............)
select nvl(t_od,0) sum1 from t where (clienttype = 2 or employer = 1)
union all
select nvl(t_od,0) sum2 from t where (clienttype = 1 or employer <> 1)

выйдет вот так:в столбик

500
600

как можно его преобразовать чтоб вывелось вот так : в строчку
500 |600|
18 окт 13, 12:48    [14997520]     Ответить | Цитировать Сообщить модератору
 Re: select перекрестный  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
pivot, case/decode??

Приведи тестовые данные и результат которое нужно получить.

----
Ramin Hashimzade
18 окт 13, 12:51    [14997547]     Ответить | Цитировать Сообщить модератору
 Re: select перекрестный  [new]
boo_0
Member

Откуда:
Сообщений: 4599
Ramin Hashimzade
pivot, case/decode??

Приведи тестовые данные и результат которое нужно получить.

----
Ramin Hashimzade


with t as (
.....)
select nvl(sum(pers),0),nvl(sum(t_od),0),nvl(sum(pers * t_od),0) from t where (clienttype = 2 or isemployer = 1)
union all
select nvl(sum(pers),0),nvl(sum(t_od),0),nvl(sum(pers * t_od),0) from t where (clienttype = 2 or isemployer = 1) and MONTHS_BETWEEN (okonpl,opendate)<1
union all
select nvl(sum(pers),0),nvl(sum(t_od),0),sum(nvl((pers),0)*nvl((t_od),0)) from t where (clienttype = 2 or isemployer = 1) and MONTHS_BETWEEN (okonpl,opendate)>=1 and MONTHS_BETWEEN (okonpl,opendate) <3
union all
select nvl(sum(pers),0),nvl(sum(t_od),0),sum(nvl((pers),0)*nvl((t_od),0)) from t where (clienttype = 2 or isemployer = 1) and MONTHS_BETWEEN (okonpl,opendate)>=3 and MONTHS_BETWEEN (okonpl,opendate) <12
union all
select nvl(sum(pers),0),nvl(sum(t_od),0),sum(nvl((pers),0)*nvl((t_od),0)) from t where (clienttype = 2 or isemployer = 1) and MONTHS_BETWEEN (okonpl,opendate)>=12 and MONTHS_BETWEEN (okonpl,opendate) <=60
union all
select nvl(sum(pers),0),nvl(sum(t_od),0),sum(nvl((pers),0)*nvl((t_od),0)) from t where (clienttype = 2 or isemployer = 1) and MONTHS_BETWEEN (okonpl,opendate)>60


это для (clienttype = 2 or isemployer = 1) , а мне рядом в строчку нужно вывести для (clienttype = 1 or isemployer <>1)
для каждого периода MONTHS_BETWEEN (......)
18 окт 13, 13:06    [14997713]     Ответить | Цитировать Сообщить модератору
 Re: select перекрестный  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
boo_0,

и где же

автор
with t as (
.....)

??? приведи пожалуйста тест. данные.

----
Ramin Hashimzade
18 окт 13, 13:13    [14997765]     Ответить | Цитировать Сообщить модератору
 Re: select перекрестный  [new]
ATymkiv
Member

Откуда:
Сообщений: 159
wm_concat
18 окт 13, 13:17    [14997813]     Ответить | Цитировать Сообщить модератору
 Re: select перекрестный  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
ATymkiv
wm_concat

нет....
18 окт 13, 13:19    [14997844]     Ответить | Цитировать Сообщить модератору
 Re: select перекрестный  [new]
Ответчик
Guest
select sum(case when clienttype = 2 then nvl(t_od,0) else 0 end) sum1, 
       sum(case when clienttype = 1 then nvl(t_od,0) else 0 end) sum2
  from t 
 where (clienttype = 2 or employer = 1) or (clienttype = 1 or employer <> 1) 
18 окт 13, 13:23    [14997894]     Ответить | Цитировать Сообщить модератору
 Re: select перекрестный  [new]
Овощи
Guest
мне кажется, что автору ТОП 14 нужен.
18 окт 13, 13:26    [14997931]     Ответить | Цитировать Сообщить модератору
 Re: select перекрестный  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
boo_0,

pivot
для >= 11g это эскуэль - кляуза, для < 11g это общепринятое обобщенное название методов, для того же самого.
обсуждалось много-много раз
18 окт 13, 13:30    [14997968]     Ответить | Цитировать Сообщить модератору
 Re: select перекрестный  [new]
Elic
Member

Откуда:
Сообщений: 29980
orawish, ему нужно 14997894 и даже без where.
18 окт 13, 13:31    [14997988]     Ответить | Цитировать Сообщить модератору
 Re: select перекрестный  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Elic
orawish, ему нужно 14997894 и даже без where.

если (как в примере ) строка таки ровно одна, то, конечно - не унионить а запятульку промеж запросами поставить
18 окт 13, 13:38    [14998061]     Ответить | Цитировать Сообщить модератору
 Re: select перекрестный  [new]
boo_0
Member

Откуда:
Сообщений: 4599
Ramin Hashimzade
boo_0,

и где же

автор
with t as (
.....)

??? приведи пожалуйста тест. данные.

----
Ramin Hashimzade

я бы с радостью, но там много всего и налеплено....что аж стыдно ((
18 окт 13, 14:13    [14998351]     Ответить | Цитировать Сообщить модератору
 Re: select перекрестный  [new]
bengunn
Member

Откуда: Обираловка-Нерезиновск
Сообщений: 68
boo_0,

>=11g - listagg
18 окт 13, 15:42    [14999008]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить