Выбираем с помощью НВЛ писали письма. Зачем? - PullRequest
1 голос
/ 18 июня 2020

Я написал этот выбор:

    SELECT 
    nvl(SUM(vl_item),0)     AS SUM_VALOR_ITENS
   ,nvl(SUM(vl_discount),0) AS SUM_VALOR_DESCONTO
   ,nvl(SUM(qty_item) is null   ,0,0)    AS SUM_QTD_ITENS
   ,COUNT(DISTINCT cod_product_rms) AS QTD_ITENS_UNICOS
   FROM db.my_table
   where SAFRA = 202006

Когда я запускал DBeaver, результат был 0 (ноль), как я и ожидал. Но результат, когда я запустил этот SQL в файле HQL с использованием Java, был «0E-10», «0E-18» и «0E-18» соответственно. Не понимаю, почему я получил такой результат. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 18 июня 2020

Я бы предложил использовать coalesce, nvl не будет работать для 3-го столбца, поскольку NVL принимает только 2 аргумента (этот принимает 3), тогда как coalesce может принимать столько, сколько вы sh.

    SELECT 
    coalesce(SUM(vl_item),0)     AS SUM_VALOR_ITENS
   ,coalesce(SUM(vl_discount),0) AS SUM_VALOR_DESCONTO
   ,coalesce(SUM(qty_item) is null   ,0,0)    AS SUM_QTD_ITENS
   ,COUNT(DISTINCT cod_product_rms) AS QTD_ITENS_UNICOS
   FROM db.my_table
   where SAFRA = 202006
...