moh*_*050 10 sql-server t-sql sql-server-2012
我有一个带value列的表。我想计算最后一行减去第一行,如下所示:
id value
1 10
2 45
3 65
4 95
. .
. .
. .
500 200
Run Code Online (Sandbox Code Playgroud)
我想获得 200 - 10 = 190
我试着然而,在SQL Server 2012中使用下面的命令,LAST并且FIRST不工作。
SELECT LAST(Value) - FIRST(Value) FROM Counter;
Run Code Online (Sandbox Code Playgroud)
SQL Server 中此命令的语法是什么?
Aar*_*and 21
你接近-FIRST并且LAST是从Access; 在 SQL Server(从 SQL Server 2012 开始)中,它们是FIRST_VALUE()和LAST_VALUE()。
因此,如果您使用的是 2012 或更高版本(或 Azure SQL 数据库),则可以通过以下方法获得答案:
CREATE TABLE #fl
(
IdentityColumn INT IDENTITY,
Value INT
);
INSERT #fl(Value) SELECT 10;
INSERT #fl(Value) SELECT 45;
INSERT #fl(Value) SELECT 65;
INSERT #fl(Value) SELECT 95;
INSERT #fl(Value) SELECT 200;
SELECT TOP (1) LAST_VALUE(Value) OVER (ORDER BY IdentityColumn)
- FIRST_VALUE(Value) OVER (ORDER BY IdentityColumn)
FROM #fl
ORDER BY IdentityColumn DESC;
GO
DROP TABLE #fl;
Run Code Online (Sandbox Code Playgroud)
ype*_*eᵀᴹ 10
另一种方式(也适用于旧版本):
SELECT
result = (SELECT TOP (1) value FROM counter ORDER BY id DESC)
- (SELECT TOP (1) value FROM counter ORDER BY id ASC) ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14047 次 |
| 最近记录: |