SQL Union не отображает все результаты

Я пытаюсь отобразить как столбец кредита, так и столбец дебета, но он помещает обе суммы в один столбец и отображает только заголовок кредита.

Для каждого описания выписки есть сумма кредита и дебет. Мне нужно его заполнить, чтобы я мог видеть Statement_description = credit и ниже Statement_description debit

`SELECT PR.[Statement_Description]
      --,PR.[Debit_Acc_Num]
      ,PR.[Credit_Acc_Num]
      ,PR.Actual_Txn_Amount as Credit_Amount
      ,Actual_Txn_Date
      ,PBY = '949'
      ,VatCode = 'E'

         FROM [Financial].[dbo].[Payment_Request] PR
             inner join SharedData.dbo.StaffData SD
                on PR.Prepared_By = SD.StaffNo 
  where  
   ID_Payment_Status = '1'
  --and Prepared_By_Date = (SELECT CONVERT(DATETIME, CONVERT(DATE, CURRENT_TIMESTAMP)) + '14:00' as date )
  and (Debit_Acc_Num  like '1%' or Debit_Acc_Num like'2%') 
  and (Credit_Acc_Num like '1%' or Credit_Acc_Num like'2%') 
  and Debit_Acc_Num <> 0
  --and Credit_Acc_Num <> 0

union  

  SELECT PR.[Statement_Description]
      ,PR.[Debit_Acc_Num]
      --,PR.[Credit_Acc_Num]
      ,PR.Actual_Txn_Amount as Debit_Amount 
      ,Actual_Txn_Date
      ,PBY = '949'
      ,VatCode = 'E'

     FROM [Financial].[dbo].[Payment_Request] PR
             inner join SharedData.dbo.StaffData SD
                on PR.Prepared_By = SD.StaffNo 
  where  
   ID_Payment_Status = '1'
  and (Debit_Acc_Num like '1%' or Debit_Acc_Num like'2%') 
  and (Credit_Acc_Num like '1%' or Credit_Acc_Num like'2%') 
  --and Debit_Acc_Num <> 0
  and Credit_Acc_Num <> 0
    order by Statement_Description
`

1 ответ

Решение

Вы можете сделать это следующим образом: взять "0" в качестве DebitAmount в первом объединении, а Credit в качестве исходного, а затем в следующем объединении сделать то же самое для Credit.

  SELECT PR.[Statement_Description]
  --,PR.[Debit_Acc_Num]
  ,PR.[Credit_Acc_Num]
  ,0 as DebitAmount
  ,PR.Actual_Txn_Amount as Credit_Amount
  ,Actual_Txn_Date
  ,PBY = '949'
  ,VatCode = 'E'

     FROM [Financial].[dbo].[Payment_Request] PR
         inner join SharedData.dbo.StaffData SD
            on PR.Prepared_By = SD.StaffNo 
where  
ID_Payment_Status = '1'
--and Prepared_By_Date = (SELECT CONVERT(DATETIME, CONVERT(DATE, 
CURRENT_TIMESTAMP)) + '14:00' as date )
and (Debit_Acc_Num  like '1%' or Debit_Acc_Num like'2%') 
and (Credit_Acc_Num like '1%' or Credit_Acc_Num like'2%') 
and Debit_Acc_Num <> 0
--and Credit_Acc_Num <> 0

union  

SELECT PR.[Statement_Description]
  ,PR.[Debit_Acc_Num]
  --,PR.[Credit_Acc_Num]
  ,PR.Actual_Txn_Amount as Debit_Amount 
  ,0 as CreditAmount
  ,Actual_Txn_Date
  ,PBY = '949'
  ,VatCode = 'E'

 FROM [Financial].[dbo].[Payment_Request] PR
         inner join SharedData.dbo.StaffData SD
            on PR.Prepared_By = SD.StaffNo 
 where  
 ID_Payment_Status = '1'
and (Debit_Acc_Num like '1%' or Debit_Acc_Num like'2%') 
  and (Credit_Acc_Num like '1%' or Credit_Acc_Num like'2%') 
--and Debit_Acc_Num <> 0
and Credit_Acc_Num <> 0
order by Statement_Description
Другие вопросы по тегам