我試圖從下表中顯示的所有月份中排除具有零值的行。
這是樣本資料;在實際情況下,12 個月內將有數千種產品部分或全部為零。在實際場景中也會有更多的月份(列)。

預期的結果將如下所示。

uj5u.com熱心網友回復:
如果受影響的列總是自然數,您可以對它們求和并檢查它們是否 > 0。
SELECT * FROM yourtable WHERE jan feb march april > 0;
如果它們可以是負數,但始終是數字,您可以根據它們的絕對值執行相同的操作。
SELECT * FROM yourtable WHERE ABS(jan) ABS(feb) ABS(march) ABS(april) > 0;
uj5u.com熱心網友回復:
在實際場景中,您只需在where子句中添加更多列。
樣本資料:
SQL> with test (prod_nm, jan, feb, mar, apr) as
2 (select 'GRANULES' , 500, 200, 100, 500 from dual union all
3 select 'INJECTION', 0, 0, 300, 550 from dual union all
4 select 'VET-A' , 0, 0, 0, 300 from dual union all
5 select 'VET-B' , 0, 0, 0, 0 from dual
6 )
詢問:
7 select *
8 from test
9 where jan <> 0 or feb <> 0 or mar <> 0 or apr <> 0;
PROD_NM JAN FEB MAR APR
--------- ---------- ---------- ---------- ----------
GRANULES 500 200 100 500
INJECTION 0 0 300 550
VET-A 0 0 0 300
SQL>
uj5u.com熱心網友回復:
使用 where any:
with test (prod_nm, jan, feb, mar, apr) as
(select 'GRANULES' , 500, 200, 100, 500 from dual union all
select 'INJECTION', 0, 0, 300, 550 from dual union all
select 'VET-A' , 0, 0, 0, 300 from dual union all
select 'VET-B' , 0, 0, 0, 0 from dual
)
select *
from test
where 0 < any (jan, feb, mar, apr);
PROD_NM JAN FEB MAR APR
--------- ---------- ---------- ---------- ----------
GRANULES 500 200 100 500
INJECTION 0 0 300 550
VET-A 0 0 0 300
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/522700.html
上一篇:如何使用OracleSQL獲取列的3個特定值的第一行?
下一篇:制作總和列并在欄位旁邊顯示結果
