Sql server 2008 SQL Server:对通过查询返回的值执行算术运算

Sql server 2008 SQL Server:对通过查询返回的值执行算术运算,sql-server-2008,Sql Server 2008,我是一个SQL noob,所以在这里寻求帮助。我有一个下面给出的示例查询。现在我想修改查询,以便在同一查询中对Test、Test1和Test2值执行以下操作: OutputValue = Test + Test1 - Test2 然后显示OutputValue的结果以及Test、Test1和Test2 SELECT CAST(balancefwd.Shares AS NUMERIC) / 1000 AS Test, SUM(CAST(booksdata.sharesissue

我是一个SQL noob,所以在这里寻求帮助。我有一个下面给出的示例查询。现在我想修改查询,以便在同一查询中对Test、Test1和Test2值执行以下操作:

OutputValue = Test + Test1 - Test2
然后显示OutputValue的结果以及Test、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

有什么建议吗?

您可以将查询包装到另一层:

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>')
然后,派生列将可供使用


虽然你的查询看起来有点错误。。你想在这里干什么?为什么没有GROUPBY子句?表中只有一条记录吗?为什么对test1和test2求和而不是test?

您可以将查询包装到另一层:

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>')
然后,派生列将可供使用


虽然你的查询看起来有点错误。。你想在这里干什么?为什么没有GROUPBY子句?表中只有一条记录吗?为什么对test1和test2求和而不是test?

以下是问题的答案: 给子查询命名1我能够对派生值执行算术运算

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 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

mysql或sql server 2008在查询中读取dbo看起来像是在使用sql server 2008。请通过编辑您的问题更正标记。已更改标记。Test是一个公司的静态值,我添加了groupby clausemysql或sqlserver2008,在查询中读取dbo看起来像是在使用sqlserver2008。请通过编辑您的问题更正标记。已更改标记。Test是一个公司的静态值,我添加了groupby子句