1

私はこの投稿を見つけました: 2 つの選択ステートメントから値を減算するにはどうすればよいですか

しかし、SQL-Server 2008 では動作しません。

2 つの基本的な SELECT ステートメントがあります。GROUP BY などはなく、SELECT、FROM、および WHERE のみです。

これらの SELECT の 1 つを他の SELECT から減算したいと思います。どちらも 1 行と 1 列を返します。

誰か助けてくれませんか?

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 に答える