对 temp table 中的两列求和

Sum two columns from temp table

我是 SQL 的新手,不确定如何对临时 table 中的两列求和,欢迎任何帮助。

脚本如下:

SELECT
    Provider,
    StartYear,
    CAST(YEAR([EndYear]) AS INT) AS 'EndYear'
INTO 
    #a
FROM 
    TABLE1

SELECT
    *, SUM(EndYear - StartYear) AS 'Years'
FROM 
    #a

我收到错误消息:

a.provider is invalid in the select list because it is not contained in either an aggregate function or GROUP BY clause

示例数据

Provider    StartYear   EndYear 
A1          1940        15/04/2016 00:00 
A2          1930        08/06/2016 00:00 
A3          1932        04/06/2016 00:00 
A2          1932        15/06/2016 00:00 
A1          1944        01/07/2016 00:00

您不需要临时 table。我想你想要这样的东西:

SELECT t1.*,
       (t1.EndYear - t1.StartYear) as Years
FROM table1 t1;

或:

SELECT t1.*,
       DATEDIFF(year, t1.StartYear, t1.EndYear) as Years
FROM table1 t1;

编辑:如果您真的想对值求和,只需删除 t1.* 并添加 sum():

SELECT SUM(t1.EndYear - t1.StartYear) as Years
FROM table1 t1;

在您的情况下,您应该修复列的名称。叫做 "Year" 的东西不应该是日期时间。但是,转换起来很容易:

SELECT SUM(YEAR(t1.EndYear) - t1.StartYear) as Years
FROM table1 t1;