相关文章推荐
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
    
3 个评论
也许某种尝试是有必要的?
你是否有一些代码来说明你是否尝试过什么?
也许不要以为论坛上的帖子是我的第一反应,而不是我的最后手段?我对连接非常熟悉,但这些表并不相关,我以前从未遇到过这种情况,我的查询不能用连接创建。我花了很长时间在论坛上搜索,但由于我是编程新手,完全是自学成才,我甚至不知道我所要实现的正确术语。
sql-server-2008
select
Tania Mofflin
Tania Mofflin
发布于 2014-05-28
2 个回答
Hieu Vo
Hieu Vo
发布于 2017-05-23
0 人赞同
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
    
StuartLC
StuartLC
发布于 2017-05-23
已采纳
0 人赞同

你可以将这些数据打包成CTE,重新使用这些值来计算差值。在没有连接条件的情况下,你只需要CROSS JOIN ,只要这些返回的数据每条只有一条。

WITH Payables AS
  SELECT 
    SUM(
        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
 
推荐文章