Oracle SQL требуется для преобразования строк в столбцы в зависимости от условий - PullRequest
0 голосов
/ 04 августа 2020

У меня есть таблица с T1 со следующими полями и данными

SETID   Emplid          ITEM_NBR        CLASS   ITEM_AMT   ITEM_TYPE_CD     ITEM_NBR_SOURCE         Descr                   ACCOUNT_NBR
KICAE   00000000261     000000000000001 0       100         C                                       Health Services         HTL0001
KICAE   00000000261     000000000000002 0       5           C               000000000000001         VAT                     VAT0001
KICAE   00000000261     000000000000003 10149   150         C                                       Book Fee (10149)        BOOK001
KICAE   00000000261     000000000000004 0       7.5         C               000000000000003         VAT                     VAT0001
KICAE   00000000261     000000000000005 10143   150         C                                       Book Fee (10143)        BOOK001
KICAE   00000000261     000000000000006 0       7.5         C               000000000000005         VAT                     VAT0001
KICAE   00000000261     000000000000007 10190   150         C                                       Book Fee (10190)        BOOK001
KICAE   00000000261     000000000000008 0       7.5         C               000000000000007         VAT                     VAT0001
KICAE   00000000261     000000000000009 0       350         C                                       Student Services        SSC0001
KICAE   00000000261     000000000000014 0       500         C                                       Registration Fees       REG0001
KICAE   00000000261     000000000000015 0       25          C               000000000000014         VAT                     VAT0001
KICAE   00000000261     000000000000016 10149   2700        C                                       Principles of Economics TUT001
KICAE   00000000261     000000000000017 0       135         C               000000000000016         VAT                     VAT001
KICAE   00000000261     000000000000018 10143   3000        C                                       Operations Management   TUT001
KICAE   00000000261     000000000000019 0       150         C               000000000000018         VAT                     VAT001
KICAE   00000000261     000000000000020 10190   7000        C                                       TOEFL Package 1         TUPC001
KICAE   00000000261     000000000000021 10149   -27         W                                       Reduction in VAT Waiver VAT001
KICAE   00000000261     000000000000022 10143   -30         W                                       Reduction in VAT Waiver VAT001
KICAE   00000000261     000000000000023 10149   -540        W                                       Discount                TUT001
KICAE   00000000261     000000000000024 10143   -600        W                                       Discount                TUT001

Я хочу показать два разных поля «НДС» и скидка. Значение НДС связано с ITEM_NBR_SOURCE и всегда 5% Код типа товара = C (Сбор), W = Отказ от прав. Размер скидки и уменьшение НДС связаны с КЛАССОМ. Любая строка, в которой должна отображаться Course_title_long <> 'VAT' и Course_title_long <> 'Discount'. ITEM_AMT для строк, где Course_title_long = 'VAT' и Course_title_long = 'Discount', должен отображаться в столбцах «Discount» и «VAT». Item_nbr_Source сообщает нам исходный номер позиции для этой платы (C) для этого Item_Type_Cd = 'W' означает скидку и скидку с НДС. ** Предметы с ACCOUNT_NBR = TUT001 и Item_Type_Cd = 'C' имеют только скидку **

Результат:

ITEM_NBR        Class   Descr                       ITEM_AMT       Discount     VAT(5%)   
000000000000001 0       Health Services             100             0            5
000000000000003 10149   Book Fee (10149)            150             0            7.5
000000000000005 10143   Book Fee (10143)            150             0            7.5
000000000000007 10190   Book Fee (10190)            150             0            7.5
000000000000009 0       Student Services            350             0            17.5
000000000000014 0       Registration Fees           500             0            25.0
000000000000016 10149   Principles of Economics     2700            540          135
000000000000018 10143   Operations Management       3000            600          150
000000000000020 10190   TOEFL Package 1             7000            0            350
000000000000021 10149   Reduction in VAT Waiver     540             0            27
000000000000022 10149   Reduction in VAT Waiver     600             0            30
...