Я пытаюсь преобразовать столбцы в строки, как в примере ниже.
_________________________________ ROW | Columns | values_
|Column1 | Column2 | Column3 _____________________________
_________________________________ 1 | 1 | 12
Row 1| 12 | 25 | 11 1 | 2 | 25
Row 2| 30 | 5 | 15 --> 1 | 3 | 11
2 | 1 | 30
2 | 2 | 5
2 | 3 | 15
Для решения этого я использовал следующее утверждение
with t as (
<my query which builds the cross tab>
)
select t.Row,
(case when n.n = 1 then Column1
when n.n = 2 then Column2
when n.n = 3 then Column3
end) as values_
from t cross join
(select 1 as n from sysibm.sysdummy1 union all
select 2 from sysibm.sysdummy1 union all
select 3 from sysibm.sysdummy1
) n;
но я получил следующую ошибку
THE STATEMENT CANNOT BE EXECUTED BY DB2 OR IN THE ACCELERATOR (REASON 7). SQLCODE=-4742, SQLSTATE=560D5, DRIVER=4.19.56
Есть ли у кого-нибудь подсказки, чтобы решить эту проблему? Благодарность


SQLcode 4772 причина 7 от ускорителя означает «В запросе используется несколько схем кодирования.».
Проверьте эту страницу https://www.ibm.com/support/knowledgecenter/en/SSEPEK_10.0.0/codes/src/tpc/n4742.html. Он советует:
"If you need more information about why the statement cannot be executed in the accelerator, issue the EXPLAIN statement and examine the output of the table DSN_QUERYINFO_TABLE."
Дополнительная информация содержится в этом страница, который советует
Ensure that all objects to which the query refers have the same encoding scheme.
Поговорите со своим администратором баз данных, узнайте CCSID объектов, участвующих в вашем запросе, и соответствующим образом переработайте запрос, например, с временными таблицами, использующими ту же кодировку.
select * from table(values(1)) union all select * from table(values(2)) union all select * from table(values(3)) заменит ссылки sysibm.sysdummy1.
Я предполагаю, что sysibm.sysdummy1 - это не тот же CCSID, что и ваши пользовательские таблицы. Возможно, создайте свою собственную таблицу с нужными вам значениями. Например.
CREATE TABLE N(N INT NOT NULL PRIMARY KEY); INSERT INTO N VALUES 1; INSERT INTO N VALUES 2;и т. д.