在零之前获得最后的价值

Psa*_*Tak 0 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 
Run Code Online (Sandbox Code Playgroud)

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

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

M.A*_*Ali 5

试试像......

SELECT COALESCE( NULLIF(Column3, 0) , NULLIF(Column2, 0) , NULLIF(Column1, 0) )
FROM TableName
Run Code Online (Sandbox Code Playgroud)

测试数据

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) 
Run Code Online (Sandbox Code Playgroud)

询问

SELECT COALESCE( 
              NULLIF(Cell6, 0) , NULLIF(Cell5, 0) , NULLIF(Cell4, 0) 
             ,NULLIF(Cell3, 0) , NULLIF(Cell2, 0) , NULLIF(Cell1, 0)
               )
FROM @TABLE
Run Code Online (Sandbox Code Playgroud)

结果

12
8
10
90
Run Code Online (Sandbox Code Playgroud)