合并两行

Combine two rows

我有一个查询返回两行数据,我想将它们合并为 1。它返回两行是因为有两个 PYMNT_TYPESVOUCHER 关联。

我想添加某种逻辑,如果 PYMNT_TYPE 等于 "W" 那么我希望 PYMNT_GROSS_AMT 成为它自己的字段 WITHHOLDING_AMT消除第二行。

我遇到的问题是,还有其他列在每一行上都有不同的值,我不确定上述更改是否会消除第二行?

我唯一关心的第二行不在第一行的信息是 PYMNT_GROSS_AMT,它具有不同于第一行的唯一值。这就是我尝试合并行的原因。

  SELECT *
  FROM PS_PYMNT_VCHR_XREF
  WHERE VOUCHER_ID = '00026130'
  AND BUSINESS_UNIT = '50000'

现在返回的数据:

编辑代码:

   SELECT 
    T1.*
   ,T2.PYMNT_GROSS_AMT 
 FROM 
    PS_PYMNT_VCHR_XREF T1
 LEFT JOIN
    PS_PYMNT_VCHR_XREF T2 on
    T2.VOUCHER_ID = T1.VOUCHER_ID AND T2.BUSINESS_UNIT = T1.BUSINESS_UNIT 
    AND T2.PYMNT_TYPE = 'W' 
 WHERE 
    T1.VOUCHER_ID = '00026130'
    AND T1.BUSINESS_UNIT = '50000'

自连接好像是你想要的

 SELECT 
    T1.*
   ,T2.PYMNT_GROSS_AMT 
 FROM 
    PS_PYMNT_VCHR_XREF T1
 LEFT JOIN
    PS_PYMNT_VCHR_XREF T2 on
    T2.VOUCHER_ID = T1.VOUCHER_ID  --or what ever the join condition should be
    T2.PYMNT_TYPE ='W'
 WHERE 
    T1.VOUCHER_ID = '00026130'
    AND T1.BUSINESS_UNIT = '50000'
    and T1.PYMNT_TYPE != 'W'

一般来说,你可以这样做:

SELECT *,
       (SELECT PYMNT_GROSS_AMT FROM PS_PYMNT_VCHR_XREF 
        WHERE VOUCHER_ID = p.VOUCHER_ID 
        AND BUSINESS_UNIT = p.BUSINESS_UNIT
        AND PYMNT_TYPES = 'W') WITHHOLDING_AMT
FROM PS_PYMNT_VCHR_XREF p
WHERE PYMNT_TYPES = 'R'
--optional conditions
AND VOUCHER_ID = '00026130'
AND BUSINESS_UNIT = '50000'