Существует мой текущий запрос:Как применить пивот к результату запроса
SELECT Name, Code, Today
, Account || Currency as Accounts
FROM (
SELECT
b.description AS Name
, b.contragentidentifycode AS Code
, c.systemday AS Today
, b.accountno AS Account
, b.currencysname AS Currency
FROM vAACCOUNT b, currentdaysetting c
WHERE b.contragentid = 412
AND b.accountno LIKE '26%'
)
это дает мне такой результат:
Name | Code | Today | Accounts
---------------------------------------
name1 | code1 | 07.09.2016 | acc1+curr1
name1 | code1 | 07.09.2016 | acc2+curr1
name1 | code1 | 07.09.2016 | acc1+curr2
name1 | code1 | 07.09.2016 | acc2+curr2
name1 | code1 | 07.09.2016 | acc1+curr3
name1 | code1 | 07.09.2016 | acc2+curr3
name1 | code1 | 07.09.2016 | acc1+curr4
name1 | code1 | 07.09.2016 | acc2+curr4
Мне нужно преобразовать этот вид на:
Name | Code | Today | someName1 | someName2 | someName3 | someName4 | someName5 | someName6 | someName7 | someName8
-------------------------------------------------------------------------------------------------------------------------------------------
name1 | code1 | 07.09.2016 | acc1+curr1 | acc2+curr1 | acc1+curr2 | acc2+curr2 | acc1+curr3 | acc2+curr3 | acc1+curr4 | acc2+curr4
Я предполагаю, что, скорее всего, для этого я должен использовать ключевое слово «Pivot». Но все мои попытки сделать это - провалились. Я не могу проецировать то, что я вижу в примерах, на свою таблицу. Пожалуйста помоги.
Для число столбцов можно добавить такой столбец "ID":
SELECT id, Name, Code, Today
, Account || Currency as Accounts
FROM (
SELECT
row_number() over (ORDER BY b.id) AS id
, b.description AS Name
...
В моем сценарии:
- номера счетов могут отличаться друг от друга;
- имя, код и данные - по одному на запрос;
- сочетание accaunt + currency уникально;
- Результат должен быть в одной строке;
- общее количество строк в результате запроса, не может быть более 10 (в моем примере 8)
Привет Павло: Я Я не уверен, что PIVOT будет работать на вас. Эта команда полезна, когда вы хотите перекрестно табулировать набор данных. Это означает использование данных в списке для создания табличной структуры - каждая ячейка содержит результат некоторой совокупной функции (SUM, COUNT и т. Д.). Нам нужно знать количество столбцов заранее (SQL всегда нужно знать количество столбцов заранее). Я предполагаю, что в вашем сценарии имя1 и name2 могут иметь разные номера учетных записей, а потому столбцы - это не сработает. Каково ваше основное требование? –
Я добавил столбец «id», который перечисляет строки 1,2,3, ..., 8. И некоторые требования к сценарию. –
Я добавил ответ ниже. Но меня очень интересует, почему вы хотите изменить способ хранения данных. Зачем вам данные в одной строке? –