我需要使用SQL创建两个具有不同键的行。我一直无法做到这一点。
我有一个ELEMENT需要分成两部分。
由于case语句,我当前的代码不起作用。如果它在A,B,C,D中,那么它被正确分配,但第二个没有。它只会吸引其他公司。
SELECT
CASE
WHEN (AB.DATA_ELEMENT_BUSINESS_NME = 'Special Handling' AND AB.UNIT_COMPANY_NME IN ('A','B','C','D')) THEN 'GAAP Special Handling'
WHEN AB.DATA_ELEMENT_BUSINESS_NME = 'Special Handling' THEN 'Statutory Special Handling'
ELSE AB.DATA_ELEMENT_BUSINESS_NME
END AS DATA_ELEMENT_BUSINESS_NME,
sum(AB.DATA_ELEMENT_AMT) as DATA_ELEMENT_AMT
FROM
有什么建议吗?
更新
数据输入:特殊处理-3727286.720000
数据输出:GAAP特殊处理-3727286.720000
法定特别处理-3727286.720000
答案 0 :(得分:0)
对于单个输入记录,您需要两个输出记录。你在这里缺少的基本思想是你在那里放了多少逻辑,像这样的单个查询将为你提供单个输入记录的单个输出记录。
你需要的是工会:
SELECT
'GAAP Special Handling' AS DATA_ELEMENT_BUSINESS_NME,
sum(AB.DATA_ELEMENT_AMT) as DATA_ELEMENT_AMT
FROM YOUR_TABLE
WHERE
AB.DATA_ELEMENT_BUSINESS_NME = 'Special Handling' AND
AB.UNIT_COMPANY_NME IN ('A','B','C','D')
UNION ALL
SELECT
CASE WHEN AB.DATA_ELEMENT_BUSINESS_NME = 'Special Handling'
THEN 'Statutory Special Handling'
ELSE AB.DATA_ELEMENT_BUSINESS_NME
END AS DATA_ELEMENT_BUSINESS_NME,
sum(AB.DATA_ELEMENT_AMT) as DATA_ELEMENT_AMT
FROM YOUR_TABLE