我找到了这篇文章: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)
答案 0 :(得分:3)
好吧我不认为交叉适用是必要的小提琴将不允许功能,但检查这个小提琴。您将需要使用该函数替换相同名称的表。我认为你的结果是别名和paren不匹配。
答案 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)
如同评论中所述,建议指定受影响的表格。但是,我认为它可能有效(我没有测试系统:()没有那些明确的定义,因为名称是唯一的。