将2个SQL Server查询的结果合并为2列

时间:2014-05-28 04:02:09

标签: sql-server-2008 select

我目前有2个SQL查询:

select 
    SUM(CASE T1.DOCTYPE 
          WHEN '1' THEN T1.CURTRXAM *1
          WHEN '4' THEN T1.CURTRXAM *-1
          WHEN '5' THEN T1.CURTRXAM *-1
          WHEN '6' THEN T1.CURTRXAM *-1
       END) as [Payables TB]
from PM20000 T1

select
    sum(PERDBLNC) as [GL Balance]
from GL10110
where ACTINDX = '130'

返回2结果如下:

Payables TB
1520512.30

GL Balance
-1520512.30

我想将结果合并为2列,并有一个方差列,如下所示 -

Payables TB      GL Balance       Variance
1520512.30       -1520512.30      0.00

谢谢

2 个答案:

答案 0 :(得分:1)

简单地

select
    (select 
        SUM(CASE T1.DOCTYPE 
        WHEN '1' THEN T1.CURTRXAM *1
        WHEN '4' THEN T1.CURTRXAM *-1
        WHEN '5' THEN T1.CURTRXAM *-1
        WHEN '6' THEN T1.CURTRXAM *-1
        END) as [Payables TB]
        from PM20000 T1) as Payables TB,

    (select
        sum(PERDBLNC) as [GL Balance]
        from GL10110
        where ACTINDX = '130') as GL Balance,

    0.00 as Variance

答案 1 :(得分:0)

您可以将这些内容包装到CTE中,以重用这些值来计算差异。如果没有连接条件,您只需要CROSS JOIN,只要这些只返回一行:

WITH Payables AS
(
  SELECT 
    SUM(
      CASE  
        WHEN T1.DOCTYPE IN ('1') THEN T1.CURTRXAM *1
        WHEN T1.DOCTYPE IN ('4','5','6') THEN T1.CURTRXAM *-1
        -- ? ELSE
      END) as [Payables TB]
  FR PM20000 T1
),
Balance AS
(
  SELECT
  SUM(PERDBLNC) as [GL Balance]
  FROM GL10110
  WHERE ACTINDX = '130'
)
SELECT 
  Payables.[Payables TB], 
  Balance.[GL Balance],  
  Payables.[Payables TB] + Balance.[GL Balance] AS Variance
  FROM 
    Payables, Balance; -- OR Payables CROSS JOIN Balance

由于您似乎在第一个查询中对T1.DOCTYPE 4,5和6进行了相同的投影,因此您可以将其替换为CASE WHEN x IN (...)