2017-10-17 7 views
-1

私はSQLのnoobですので、ここで助けを探しています。私は以下のようなサンプルクエリを持っています。その後SQL Server:クエリによって返された値に対して算術演算を実行します。

OutputValue = Test + Test1 - Test2 

テスト、Test1を& Test2を一緒にOutputValueの結果を示しています。今、私は、同じクエリ内のTest1とTest2を値が、私はテストで次の操作を行うことができるようにクエリを変更したいと思います。

SELECT 
    CAST(balancefwd.Shares AS NUMERIC)/1000 AS Test, 
    SUM(CAST(booksdata.sharesissued AS NUMERIC)/1000) AS Test1, 
    SUM(CAST(booksdata.sharesretired AS NUMERIC)/1000) AS Test2 
FROM 
    SQLTest.TestBooks.dbo.booksdata booksdata 
JOIN 
    SQLTest.TestBooks.dbo.balancefwd balancefwd ON booksdata.companynumber = balancefwd.companynumber 
WHERE 
    booksdata.CompanyNumber= '<number>' 
GROUP BY 
    balancefwd.shares 

+2

mysqlまたはsql server 2008のクエリでdboを読み取っているように見えるのは、sql-server 2008を使用しているようです。質問を編集してタグを修正してください。 –

+0

タグを変更しました。テストは会社にとって静的な値であり、私はgroup by節を追加しました –

答えて

0

問題の答えは次のとおりです。 サブクエリ(t1)に名前を付けることで、派生した値に対して算術演算を実行することができました。

Select t1.Test, t1.Test1, t1.Test2, t1.Test+t1.Test1-t1.Test2 as OutputValue from 
(SELECT 
    CAST(balancefwd.Shares AS NUMERIC)/1000 AS Test, 
    SUM(CAST(booksdata.sharesissued AS NUMERIC)/1000) AS Test1, 
    SUM(CAST(booksdata.sharesretired AS NUMERIC)/1000) AS Test2 
FROM 
    SQLTest.TestBooks.dbo.booksdata booksdata 
JOIN 
    SQLTest.TestBooks.dbo.balancefwd balancefwd ON booksdata.companynumber = balancefwd.companynumber 
WHERE 
    booksdata.CompanyNumber= '<number>' 
GROUP BY 
    balancefwd.shares) t1 
1

あなたは別の層にクエリをラップすることができます

SELECT t.*, t.test + t.test1 - t.test2 as total 
FROM (Select cast(balancefwd.Shares as numeric)/1000 as Test, 
      sum(cast(booksdata.sharesissued as numeric)/1000)as Test1, 
      sum(cast(booksdata.sharesretired as numeric)/1000)as Test2 
     from SQLTest.TestBooks.dbo.booksdata booksdata 
     join SQLTest.TestBooks.dbo.balancefwd balancefwd on booksdata.companynumber=balancefwd.companynumber 
     where booksdata.CompanyNumber= '<number>') 

その後、導出列が使用できるようになります。

クエリが少し間違っているように見えますが、ここで何をしようとしていますか?なぜgroup by節はありませんか?テーブルに1レコードしかありませんか?あなたはなぜtest1test2の和を返しますが、testは含まないのですか?

関連する問題