Sql 以外部变量开始的计算字段
我有一个带有字段的表Tbl1:description、Dtype、valueLeft、valueRight 数据可能如下所示:Sql 以外部变量开始的计算字段,sql,Sql,我有一个带有字段的表Tbl1:description、Dtype、valueLeft、valueRight 数据可能如下所示: +----------------------------------------------+ | Description | Dtype | valueLeft | valueRight | +----------------------------------------------+ | Art1 | 1 | 5 |
+----------------------------------------------+
| Description | Dtype | valueLeft | valueRight |
+----------------------------------------------+
| Art1 | 1 | 5 | 0 |
| Art2 | 1 | 3 | 0 |
| Art3 | 2 | 0 | 6 |
| Art4 | 1 | 11 | 0 |
| Art5 | 2 | 0 | 1 |
| ArtN | .... | .... | .... |
+..............................................+
字段数据类型只能为1或2
问题:我想对新列进行选择,该列根据字段Dtype 1=SUM valueLeft,2=Decrete valueRight上的值求和valueLeft或valueRight
例如:
+----------------------------------------------+
| Description | Dtype | valueLeft | valueRight | newcol
+----------------------------------------------+
| Art1 | 1 | 5 | 0 | 5
| Art2 | 1 | 3 | 0 | 8
| Art3 | 2 | 0 | 6 | 2
| Art4 | 1 | 11 | 0 | 13
| Art5 | 2 | 0 | 1 | 10
我该怎么做?因为您没有指定RDBMS。。。使用SQL Server语法:
为什么?您尝试过什么?您使用的是什么rdbms?
SELECT a.Description, a.Dtype, a.valueLeft, a.valueRight,
(SELECT SUM (CASE WHEN b.Dtype = 1 THEN b.valueLeft ELSE -b.valueRight END)
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY Description) as id, Dtype, valueLeft, valueRight
FROM Tbl1 ) b
WHERE b.id <= a.id)
FROM (SELECT ROW_NUMBER() OVER (ORDER BY Description) as id, Description, Dtype, valueLeft, valueRight
FROM Tbl1 ) a