我想從一個巨大的表中獲得所有記錄,其中number
列中的任何一列的計數值都大於0
。什麼是最好的方式來做到這一點?對具有特定列值的記錄的Oracle SQL「元」查詢
例如爲:
/* table structure*/
create table sometable (id number,
somestring varchar2(12),
some_amount_1 number(17,3),
some_amount_2 number(17,3),
some_amount_3 number(17,3),
...
some_amount_xxx number(17,3));
/* "xxx" > 100, and yeah I did not designed that table structure... */
而且我想任何行,其中任何some_amount_n > 0
的(甚至更好的解決方案是在顯示的字段(一個或多個第一位置添加一個字段)大於零)。
我知道我可以用一個巨大的some_amount_1 > 0 OR some_amount_2 > 0 OR ...
塊(與一些case when
字段名寫這個,但應該有一些更優雅的解決方案,是不是有
優雅的解決方案是通過有一個數字列規範化您的表。 Instaed of> 100'some_amount_X'列,創建一個只有4列的表:'(id,somestring,X,some_amount)' –
也許你是對的@ypercube,但我不能這樣做:沒有權限那並不能強迫那些擁有。 –
如果數字是非負數,則在'select'的'where'子句中添加所有數字並檢查總和是否大於' – Raihan