对 1 列求和并在另一列上选择日期
sum 1 column and pick the date on another column
我有一个包含 2 列的 table:
date | points
数据:
2015-01-30 00:00:00.000 | 1.2
2015-01-29 00:00:00.000 | 2
2015-01-30 00:00:00.000 | 5
2015-01-27 00:00:00.000 | 7
我想根据 date
对 point
列求和。因此,如果我使用 2015-01-30 00:00:00.000
过滤日期,那么结果将如下所示:
2015-01-30 00:00:00.000 | 7.5
上面的记录应该是这样的。
我有一个查询但是 returns
Error converting data type varchar to float.
我的 SQL 代码。
SELECT gpsdate, totkm
FROM (
SELECT gpsdate,
cast(cast(cast((SUM(KMRUN)) as float) as int) as nvarchar(50)) as totkm
,
RANK() OVER(PARTITION BY gpsdate
ORDER BY SUM(KMRUN) DESC) as R
FROM view_tracklist_report
GROUP BY gpsdate) as InnerQuery
WHERE InnerQuery.R = 1
只需分组:
Select gpsdate, Sum(CAST(KMRUN AS float)) as KMRUN
From view_tracklist_report
group BY gpsdate
测试数据
CREATE TABLE #Test ([date] DATETIME, points FLOAT);
INSERT INTO #Test
([date], points)
VALUES
('2015-01-30 00:00:00.000', 1.2),
('2015-01-29 00:00:00.000', 2),
('2015-01-30 00:00:00.000', 5),
('2015-01-27 00:00:00.000', 7)
实际代码:不知道为什么总和应该是 7.5? 5+1.2=6.2
SELECT DISTINCT [date], SUM(points) OVER(PARTITION BY [date]) AS TotPoints
FROM #Test
这不是将数值存储为 varchar 的好选择。如果这样做,则必须在每个查询中将它们转换为数字。这不是最优的。
因此您必须转换您的列 tu FLOAT
。然后你可以简单地调用
SUM(KMRUN)
没有任何转换。
现在您的 SUM(KMRUN)
正在连接字符串并给出类似于
的结果
1.2257
我有一个包含 2 列的 table:
date | points
数据:
2015-01-30 00:00:00.000 | 1.2
2015-01-29 00:00:00.000 | 2
2015-01-30 00:00:00.000 | 5
2015-01-27 00:00:00.000 | 7
我想根据 date
对 point
列求和。因此,如果我使用 2015-01-30 00:00:00.000
过滤日期,那么结果将如下所示:
2015-01-30 00:00:00.000 | 7.5
上面的记录应该是这样的。
我有一个查询但是 returns
Error converting data type varchar to float.
我的 SQL 代码。
SELECT gpsdate, totkm
FROM (
SELECT gpsdate,
cast(cast(cast((SUM(KMRUN)) as float) as int) as nvarchar(50)) as totkm
,
RANK() OVER(PARTITION BY gpsdate
ORDER BY SUM(KMRUN) DESC) as R
FROM view_tracklist_report
GROUP BY gpsdate) as InnerQuery
WHERE InnerQuery.R = 1
只需分组:
Select gpsdate, Sum(CAST(KMRUN AS float)) as KMRUN
From view_tracklist_report
group BY gpsdate
测试数据
CREATE TABLE #Test ([date] DATETIME, points FLOAT);
INSERT INTO #Test
([date], points)
VALUES
('2015-01-30 00:00:00.000', 1.2),
('2015-01-29 00:00:00.000', 2),
('2015-01-30 00:00:00.000', 5),
('2015-01-27 00:00:00.000', 7)
实际代码:不知道为什么总和应该是 7.5? 5+1.2=6.2
SELECT DISTINCT [date], SUM(points) OVER(PARTITION BY [date]) AS TotPoints
FROM #Test
这不是将数值存储为 varchar 的好选择。如果这样做,则必须在每个查询中将它们转换为数字。这不是最优的。
因此您必须转换您的列 tu FLOAT
。然后你可以简单地调用
SUM(KMRUN)
没有任何转换。
现在您的 SUM(KMRUN)
正在连接字符串并给出类似于
1.2257