减去两个SELECT语句以产生单个结果?

时间:2012-05-30 11:08:24

标签: sql sql-server

我找到了这篇文章:how do I subtract values from two select statements

但我无法让它在SQL-Server 2008上运行。

我有两个基本的SELECT语句。没有GROUP BY或任何东西,只有SELECT,FROM和WHERE。

我想从另一个中减去其中一个SELECT。两者都返回一行和一列。

有人可以帮忙吗?

SELECT 
    ((SELECT Field1 AS BaseBase FROM Table1
        WHERE Field2 = 'something' 
        AND Field3 = 
           (SELECT Field4 FROM SEL_Function('something','something')) as tab1)
      -     
    ((SELECT Field5 FROM SEL_Function('something','something') as tab2)

2 个答案:

答案 0 :(得分:3)

好吧我不认为交叉适用是必要的小提琴将不允许功能,但检查这个小提琴。您将需要使用该函数替换相同名称的表。我认为你的结果是别名和paren不匹配。

http://sqlfiddle.com/#!3/dc72f/13

答案 1 :(得分:0)

在提供的链接中有

select v1.Value1 - v2.Value2 from ((bla) AS v1 CROSS JOIN (blubb) AS v2

我会翻译成这个(在你的情况下)

SELECT tab1.BaseBase - tab2.Minus FROM 
((SELECT Field1 AS BaseBase FROM Table1
    WHERE Field2 = 'something' 
    AND Field3 = 
       (SELECT Field4 FROM SEL_Function('something','something')) as tab1
CROSS JOIN 
(SELECT Field5 AS Minus FROM SEL_Function('something','something')) as tab2)

如同评论中所述,建议指定受影响的表格。但是,我认为它可能有效(我没有测试系统:()没有那些明确的定义,因为名称是唯一的。

相关问题