我在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中执行此操作。
答案 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