SQL Union未显示所有结果

SQL Union未显示所有结果,sql,sql-server,tsql,union,Sql,Sql Server,Tsql,Union,我试图同时显示贷方列和借方列,但它将两个金额放在一列中,并且只显示贷方标题 对于每个报表描述,都有一个贷方和一个借方金额。 我需要它来填充,以便我可以看到对账单_description=credit 及以下对账单(说明)借方 `SELECT PR.[Statement_Description] --,PR.[Debit_Acc_Num] ,PR.[Credit_Acc_Num] ,PR.Actual_Txn_Amount as Credit_Amount

我试图同时显示贷方列和借方列,但它将两个金额放在一列中,并且只显示贷方标题

对于每个报表描述,都有一个贷方和一个借方金额。 我需要它来填充,以便我可以看到对账单_description=credit 及以下对账单(说明)借方

`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
`

您可以这样做,将“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

Microsoft SQL Server Management努力使用UNION ALL而不是UNION。UNION ALL仍然只为我提供贷方栏而不是借方栏感谢这项工作非常完美,但我如何在最后进行平衡以显示贷方与借方相等,因为我需要将其导出到excel文档中,因为这样做将是一件自动化的事情。要显示余额等于零,您可以将整个查询包装在一个选项卡中,然后计算贷方和借方的总和,因为您现在有两个单独的列。然后根据需要计算差额。