Возьмите данные запроса, чтобы построить новую таблицу - PullRequest
3 голосов
/ 09 марта 2012

У меня есть таблица, к которой я выполняю запрос и получаю результаты вроде:

-----------------------------------------------------------------------------------------------
Account January February March April May June July August September October November December
-----------------------------------------------------------------------------------------------
1234      0        50     100    0    0    0   120   280    800        0      650      124
-----------------------------------------------------------------------------------------------

Как я могу преобразовать этот запрос, чтобы отобразить такие данные, как:

------------------------
Account    Period  Amount
-------------------------
1234        Jan      0
1234        Feb      50
1234        Mar      100
.
.
1234        Dec      124
--------------------------

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

Ответы [ 3 ]

1 голос
/ 09 марта 2012

Вы можете использовать unpivot, если это поддерживается в используемой вами СУБД.

Примерно так:

select U.Account, 
       U.Period,
       U.Amount
from 
  ( -- Your query goes here
    select 
      1234 as Account,
      0 as Januar,
      50 as February,
      100 as March
  ) as T
unpivot
  (
    Amount for Period in (Januar, February, March)
  ) as U

Результат:

Account     Period     Amount
----------- ---------- -----------
1234        Januar     0
1234        February   50
1234        March      100      
1 голос
/ 09 марта 2012

Вы можете отобразить его с помощью запроса, например:

SELECT Account, 'Jan' as Period, January as Amount
FROM myTable

UNION ALL

SELECT Account, 'Feb' as Period, February as Amount
FROM myTable

UNION ALL

...
0 голосов
/ 09 марта 2012

Я думаю, что приведенный выше ответ unpivot, вероятно, лучше всего, если ваш db поддерживает его, но ... у меня такое чувство, что ваш исходный запрос может быть изменен, для этого достаточно просто "group by"

select ..
from <table>
where Account = '1234'
group by Account, Period
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...