PL- SQL: ORA-00904 - Неверный идентификатор - столбец в предложении Select и Pivot - PullRequest
1 голос
/ 11 марта 2020

Имеется код, который работает для создания выходных данных ниже, и который на протяжении всей моей жизни не может отладить свод, чтобы получить «Налоговый статус», чтобы у каждого был свой столбец. Я удаляю предложения «ORDER» и «GROUP» и пробую это как сводку, но все равно выдает «ORA-00904:« Налоговый статус »: неверный идентификатор». В зависимости от того, что я сделал, время от времени это делается при первоначальном выборе, в других он сердится из-за пивота, и если я использую одинарные или двойные кавычки.

Борьба с пивотом:

pivot
(
    min('Total Value') 
    for ("Tax Status")
    in ('Exempt from Taxation' as "Exempt", 'Taxable' as "Taxable", 'Tax Agreement - Operator of a Public Utility' as "Tax Agreement",
    '"Assessed Person" Tax Agreement' as "Tax Agreement", 'Grant in Place of Tax' as "Grant", 'Council Tax Cancellation or Refund' as "Council Cancel/Refund")
)

Рабочий запрос, который производит вывод ниже:

SELECT "Team", "Tax Status", sum("Total Value") "Total Value"
FROM 
    (
    select (A.account_roll_number) "Roll Number", ALU.DESCRIPTION "Assessor", A.account_total_property_value as "Total Value",
    TaxLU.DESCRIPTION "Tax Status",

    CASE
        when A.assessor_id in ('ATHENDRATA', 'BRTHOMPSON', 'FTACIUNE', 'HPHILLIPS', 'JDCHU', 'JRYOUNG1', 'MHARTMANN', 'NCCHAN', 'RLEE5', 'SBERZINS') then 'Industrial'
        when A.assessor_id in ('ASMTDWA','ASMTEB', 'ASMTWS', 'BBROCKLEBANK', 'CCHICHAK', 'CYMAU', 'GJONES4', 'IYPAU', 'JTGREER', 'KHOUSTON', 'LGMORRISON', 'MMCKENZIE1', 'MWALZ', 'SKUANG', 'STBAZIN', 'TKNGUYEN1', 'ASHIELDS') then 'Single Residential'
        when A.assessor_id in ('BTANG', 'CMACMILLAN1', 'DGENCARELLI', 'EWU1', 'JWEHLER', 'LMDUNBAR', 'LWONG4', 'MGULOWSKA', 'RLEE1', 'SHAMMOUD', 'SLTURNER', 'YWANG') then 'Multi Residential'
        when A.assessor_id in ('CMULENGA', 'EPOPOVICS', 'GFULLER', 'IMCDERMOTT', 'JERMUBE', 'JNSTEVENSON', 'JPLEPINE', 'KBUCKRY', 'KDALMHJELL', 'NPHAM1', 'PGKERSEY', 'SMSAMPLE') then 'Special Purpose and Land'
        when A.assessor_id in ('ASMTHN', 'DCARSON', 'DLIDGREN', 'DMCCORD', 'EBORISENKO', 'HYAU1', 'MCTRIMBLE', 'RJTHARAKAN', 'TBJOHNSON1', 'VWONG1', 'WGIBBS', 'YYE', 'AVPETERS') then 'Office'
        when A.assessor_id in ('AKEAST', 'BLTHOMPSON', 'BNELSON1', 'JCRUJI', 'JWONG1', 'KGARDINER', 'KMHAUT', 'NTNGUYEN', 'RTLUCHAK', 'SGILL3', 'THEGER1', 'TJLUDLOW', 'ZRGEIB') then 'Retail'
        else 'Other'
    END as "Team"

    from REP_DBA.AB000_ACCOUNT A

    join REP_DBA.LU_ASMT_ASSIGN_ASSESSOR ALU
    on A.assessor_id = ALU.code

    -- Decode the Tax Status from the LU Table
    join rep_dba.LU_ASMT_ACCT_TAX_STATUS TaxLU
    on TaxLU.CODE = A.account_tax_status

    where A.rollyear = :rollyear
    and A.account_type = 'P'
    and A.account_status = 'AP'
    and A.account_total_property_value is not null
    ORDER BY account_total_property_value DESC
)
GROUP BY "Team", "Tax Status"
ORDER BY "Team"

Вывод до точки поворота

Working Output

1 Ответ

2 голосов
/ 11 марта 2020

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

Select * from
(
SELECT "Team", "Tax Status", sum("Total Value") "Total Value"
FROM 
    (
    select (A.account_roll_number) "Roll Number", ALU.DESCRIPTION "Assessor", A.account_total_property_value as "Total Value",
    TaxLU.DESCRIPTION "Tax Status",

    CASE
        when A.assessor_id in ('ATHENDRATA', 'BRTHOMPSON', 'FTACIUNE', 'HPHILLIPS', 'JDCHU', 'JRYOUNG1', 'MHARTMANN', 'NCCHAN', 'RLEE5', 'SBERZINS') then 'Industrial'
        when A.assessor_id in ('ASMTDWA','ASMTEB', 'ASMTWS', 'BBROCKLEBANK', 'CCHICHAK', 'CYMAU', 'GJONES4', 'IYPAU', 'JTGREER', 'KHOUSTON', 'LGMORRISON', 'MMCKENZIE1', 'MWALZ', 'SKUANG', 'STBAZIN', 'TKNGUYEN1', 'ASHIELDS') then 'Single Residential'
        when A.assessor_id in ('BTANG', 'CMACMILLAN1', 'DGENCARELLI', 'EWU1', 'JWEHLER', 'LMDUNBAR', 'LWONG4', 'MGULOWSKA', 'RLEE1', 'SHAMMOUD', 'SLTURNER', 'YWANG') then 'Multi Residential'
        when A.assessor_id in ('CMULENGA', 'EPOPOVICS', 'GFULLER', 'IMCDERMOTT', 'JERMUBE', 'JNSTEVENSON', 'JPLEPINE', 'KBUCKRY', 'KDALMHJELL', 'NPHAM1', 'PGKERSEY', 'SMSAMPLE') then 'Special Purpose and Land'
        when A.assessor_id in ('ASMTHN', 'DCARSON', 'DLIDGREN', 'DMCCORD', 'EBORISENKO', 'HYAU1', 'MCTRIMBLE', 'RJTHARAKAN', 'TBJOHNSON1', 'VWONG1', 'WGIBBS', 'YYE', 'AVPETERS') then 'Office'
        when A.assessor_id in ('AKEAST', 'BLTHOMPSON', 'BNELSON1', 'JCRUJI', 'JWONG1', 'KGARDINER', 'KMHAUT', 'NTNGUYEN', 'RTLUCHAK', 'SGILL3', 'THEGER1', 'TJLUDLOW', 'ZRGEIB') then 'Retail'
        else 'Other'
    END as "Team"

    from REP_DBA.AB000_ACCOUNT A

    join REP_DBA.LU_ASMT_ASSIGN_ASSESSOR ALU
    on A.assessor_id = ALU.code

    -- Decode the Tax Status from the LU Table
    join rep_dba.LU_ASMT_ACCT_TAX_STATUS TaxLU
    on TaxLU.CODE = A.account_tax_status

    where A.rollyear = :rollyear
    and A.account_type = 'P'
    and A.account_status = 'AP'
    and A.account_total_property_value is not null
    -- ORDER BY account_total_property_value DESC -- not needed
  )
GROUP BY "Team", "Tax Status"
)
pivot
(
    min("Total Value")  -- here
    for ("Tax Status")
    in ('Exempt from Taxation' as "Exempt", 'Taxable' as "Taxable", 
        'Tax Agreement - Operator of a Public Utility' as "Tax Agreement", -- duplicate
        '"Assessed Person" Tax Agreement' as "Tax Agreement 1", -- changed alias, added 1
        'Grant in Place of Tax' as "Grant", 'Council Tax Cancellation or Refund' as "Council Cancel/Refund")
)

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...