1

我确实找到了这篇文章:如何从两个选择语句中减去值

但我无法让它在 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)
4

2 回答 2

3

好吧,我不认为交叉应用是必要的小提琴不会允许功能,但请查看这个小提琴。您将希望用该函数替换同名的表。我认为您被别名和括号不匹配的组合所困扰。

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

于 2012-05-30T11:28:11.417 回答
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)

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

于 2012-05-30T11:14:13.157 回答