Объединить два ряда - PullRequest
       16

Объединить два ряда

0 голосов
/ 28 августа 2018

У меня есть запрос, который возвращает две строки данных, которые я хотел бы объединить в 1. Он возвращает две строки, потому что есть две PYMNT_TYPES, связанные с VOUCHER.

Я хотел бы добавить некоторую логику, в которой, если PYMNT_TYPE равно "W", тогда я хочу, чтобы PYMNT_GROSS_AMT было его собственным полем с именем WITHHOLDING_AMT, чтобы исключить 2-ю строку.

Часть, с которой я борюсь, состоит в том, что есть другие столбцы, которые имеют разные значения в каждой строке, и я не уверен, устранит ли указанное выше изменение 2-ю строку?

Единственная информация, которая мне небезразлична во 2-й строке, которая не находится в первой строке, - это PYMNT_GROSS_AMT, которая имеет уникальное значение по сравнению с тем, что находится в первой строке. Вот почему я пытаюсь объединить строки.

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

Данные возвращаются сейчас: enter image description here

РЕДАКТИРОВАННЫЙ КОД:

   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'

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Как правило, вы можете сделать:

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'
0 голосов
/ 28 августа 2018

Самостоятельное объединение - это то, что вы хотите

 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'
...