У меня есть следующий запрос для генерации конкретного отчета
SELECT DATE,
NVL(SUM(P_A),0) AS P_A,
NVL(SUM(P_B),0) AS P_B,
NVL(SUM(P_C),0) AS P_C,
NVL(SUM(P_D),0) AS P_D
FROM(SELECT DISTINCT
D.ORG,
D.TYPE,
D.ID
D.PART
D.QTY
TO_CHAR(H.ACTUAL_DATE,'YYYYMMDD')
AS SHIP_DATE,
CASE
WHEN D.PART = 'A'
THEN
NVL(D.QTY,0)
END AS P_A,
CASE
WHEN D.PART = 'B'
THEN
NVL(D.QTY,0)
END AS P_B)
CASE
WHEN D.PART = 'C'
THEN
NVL(D.QTY,0)
END AS P_C,
CASE
WHEN D.PART = 'D'
THEN
NVL(D.QTY,0)
END AS P_D
FROM V_DTL D, O_HDR H
WHERE D.ORG='ABC'
AND D.TYPE IN ('XYZ')
AND H.ID = D.ID
AND H.STATUS = 'PQR'
AND H.ACTUAL_DATE =>
TO_DATE ('20171001', 'YYYYMMDD')
AND H.ACTUAL_DATE <
TO_DATE ('20181002', 'YYYYMMDD')
Сегодня я узнал, что на самом деле существует таблица с именем «Task_Dtl», которая имеет все части (A, B, C, D) Я использую в случае заявления.и могут быть связаны с обеими таблицами в запросе, используя поля (Org, часть и т. д.)
Мой вопрос здесь такой: есть ли способ использовать эту таблицу, чтобы избавиться от жесткого кодирования в запросе (тематические заявления).Проблема в том, что это строки в таблице, но они нужны мне как столбцы для моего набора результатов.
Я посмотрел на операцию сводки, но понял, что она используется при изменении строк таблицы ONE настолбцы или наоборот.Но мне нужно использовать другие таблицы здесь для qty и т. Д. Можно ли здесь использовать pivot?Если да, то как?иначе.Есть ли другой способ, которым мы можем достичь этого.Любая помощь высоко ценится.