2017-04-06 46 views
1

私は次のクエリとアマゾンの赤方偏移のデータベースを照会しようとしている:「NVLまたはその近くの構文エラー:ネストされたNVLクエリ問題

NVL(SUM(CASE WHEN (original_price>0) THEN (original_price - sale_price1) 
ELSE (NVL(savings_low,0)) END),0) 

しかし、これは

無効な操作を提供します

エラーです。

これは、このように見えた元MySQLのクエリ、から適応(とMySQLで動作)した

IFNULL(SUM(IF(original_price>0, original_price - sale_price1, 
IFNULL(savings_low,0))),0) 

誰もがこれで間違っているものを見ると、修正を提案することはできますか?

答えて

1

あなたのselectステートメントのその部分は完全に有効です。

with mock_data as 
(
SELECT NULL::integer as original_price, null::integer as sale_price1, null::float as savings_low UNION ALL 
SELECT 100, 50, 0.10 UNION ALL 
SELECT 100, 50, NULL UNION ALL 
SELECT 100, NULL, 0.10 UNION ALL 
SELECT 100, NULL, NULL UNION ALL 
SELECT NULL, 50, 0.10 UNION ALL 
SELECT NULL, 50, NULL UNION ALL 
SELECT NULL, NULL, 0.10 
) 


SELECT NVL(
    SUM(
    CASE WHEN (original_price > 0) 
    THEN (original_price - sale_price1) 
    ELSE (NVL (savings_low,0)) 
    END) 
,0) 
FROM mock_data 

構文エラーは、クエリ内の別の場所である:私の疑惑は、あなたのSELECT文で、以前のものがあるということであるあなたは、ヌルと非NULL値の8つのすべての組み合わせをテストする次のクエリ、とそれを検証することができます末尾にカンマがありません。

関連する問題