Sql 以外部变量开始的计算字段

Sql 以外部变量开始的计算字段,sql,Sql,我有一个带有字段的表Tbl1:description、Dtype、valueLeft、valueRight 数据可能如下所示: +----------------------------------------------+ | Description | Dtype | valueLeft | valueRight | +----------------------------------------------+ | Art1 | 1 | 5 |

我有一个带有字段的表Tbl1:description、Dtype、valueLeft、valueRight 数据可能如下所示:

+----------------------------------------------+
| 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