在零之前获得最后的价值

时间:2015-04-18 17:33:14

标签: sql sql-server

我在SQL Server中有这个表:

Cell1   Cell2   Cell3   Cell4   Cell5   Cell6   vbzero

3        65      **12**  0        0       0       
12        4        5      1       6      8  
10        0        0      0       0       0 
1        90        0      0       0       0 

我希望在零之前获得最后的价值。例如,在第一行中获得12,在第二行中获得8,因为行拖曳不包含零,而第三行获得10,......

如何在SQL Server中执行此操作。

1 个答案:

答案 0 :(得分:5)

尝试类似......

SELECT COALESCE( NULLIF(Column3, 0) , NULLIF(Column2, 0) , NULLIF(Column1, 0) )
FROM TableName

测试数据

DECLARE @TABLE TABLE 
(Cell1 INT,Cell2 INT,Cell3 INT,Cell4 INT,Cell5 INT,Cell6 INT)
INSERT INTO @TABLE VALUES 
(3 ,  65  , 12, 0 , 0 , 0),       
(12,  4   , 5 , 1 , 6 , 8),  
(10,  0   , 0 , 0 , 0 , 0), 
(1 ,  90  , 0 , 0 , 0 , 0) 

查询

SELECT COALESCE( 
              NULLIF(Cell6, 0) , NULLIF(Cell5, 0) , NULLIF(Cell4, 0) 
             ,NULLIF(Cell3, 0) , NULLIF(Cell2, 0) , NULLIF(Cell1, 0)
               )
FROM @TABLE

结果

12
8
10
90