T-SQL - 返回最右边的非零列

Pat*_*ick 5 sql t-sql

我有一个奇怪的场景,我需要在表格中返回最右边的非零列,结构如下:

GL           Q1          Q2          Q3          Q4
1            100         0           0           0
2            100         900         250         0
3            600         100         0           1000
Run Code Online (Sandbox Code Playgroud)

我期待输出为:

GL           Amount
1            100
2            250
3            1000
Run Code Online (Sandbox Code Playgroud)

无论如何,作为一种基于集合的方法,无需诉诸CASE声明或类似的解决方案?性能在这里很重要.

Cha*_*ins 11

SELECT
   GL,
   COALESCE( NULLIF(Q4,0), NULLIF(Q3,0), NULLIF(Q2,0), NULLIF(Q1,0) ) as Amount
FROM
   myTable
Run Code Online (Sandbox Code Playgroud)