对 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;
我是 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;