Teradata-从一行创建两行

Teradata-从一行创建两行,teradata,Teradata,我需要使用SQL创建两个键不同的行。我一直无法做到这一点 我有一个元素需要分成两部分 一般公认会计原则:只有在处于 公司A、B、C或D 法定:应始终等同于母公司(特殊处理) 由于case语句,我当前的代码无法工作。如果它位于A、B、C、D中,则它被正确分配,但第二个没有。它只会吸引其他公司 SELECT CASE WHEN (AB.DATA_ELEMENT_BUSINESS_NME = 'Special Handling' AND AB.UNIT_COMPANY_NME IN

我需要使用SQL创建两个键不同的行。我一直无法做到这一点

我有一个元素需要分成两部分

  • 一般公认会计原则:只有在处于 公司A、B、C或D
  • 法定:应始终等同于母公司(特殊处理)
由于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对于单个输入记录,您需要两个输出记录。这里您缺少的基本思想是,您在其中输入了多少逻辑,像这样的单个查询将为您提供单个输入记录的单个输出记录

你需要的是一个联盟:

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

你需要详细说明你的要求,我觉得你的案子没问题。您能否显示一些示例数据和预期结果?CASE语句在满足第一个条件时停止处理。您需要提供比目前更多的示例详细信息数据。最好使用
UNION ALL
以避免不同的处理。