SQL: Как соединить два столбца определенным образом? - PullRequest
1 голос
/ 15 мая 2019

Я работаю с базой данных Oracle, и я новичок в SQL в целом.

У меня есть таблица со столбцами данных и месяцев. После фильтрации данных у меня осталось всего несколько строк. Но я хочу получить два столбца: 1-й столбец с указанием 12 месяцев (1,2,3,4,5,6,7,8,9,10,11,12) и второй столбец со значениями из исходных данных ( если есть) или нули.

F.e .: Исходные данные:

MONTH     VALUE
  9        96

Что я хочу:

MONTH     VALUE
  1         0
  2         0
  3         0
  4         0
  5         0
  6         0
  7         0
  8         0
  9         96
  10        0
  11        0
  12        0

Я уже пытался использовать функции объединения и объединения всех функций, но это не сработало.

Ответы [ 3 ]

1 голос
/ 15 мая 2019

Сначала сгенерируйте последовательность из числа 12 месяцев, затем используйте левое соединение

select monthNo, coalesce(Value,0) as value from
(
SELECT 1 MonthNo
         FROM   dual
         CONNECT BY LEVEL <= 12
)A left join originaltable b on A.monthNo=b.month
0 голосов
/ 15 мая 2019

Бро наслаждайся ...

select months.month ,original_data.VALUE 
from original_data
Right JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) months(month) on
months.month = original_data.MONTH

order by months.month --optional 
0 голосов
/ 15 мая 2019

это то, что вы ищете?

WITH tab AS(SELECT LEVEL AS m , null as value  FROM DUAL CONNECT BY LEVEL <= 12)
, tab2 AS(SELECT 9 as m, 96 as VALUE FROM DUAL)

select t1.m
      ,coalesce(t2.value,0) as value
from tab t1
left join tab2 t2 on t1.m = t2.m
order by 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...