合并两行
Combine two rows
我有一个查询返回两行数据,我想将它们合并为 1。它返回两行是因为有两个 PYMNT_TYPES
与 VOUCHER
关联。
我想添加某种逻辑,如果 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'
我有一个查询返回两行数据,我想将它们合并为 1。它返回两行是因为有两个 PYMNT_TYPES
与 VOUCHER
关联。
我想添加某种逻辑,如果 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'