оракул sql группа с пустой строкой - PullRequest
0 голосов
/ 08 ноября 2019

Я должен сгруппировать список с пустыми строками. Вот 2 примера: ohne без пустых строк (работает хорошо) и один с пустыми строками (не работает). Есть идеи?

Works well
==============
Name    Bewertung   Leistung        
---------------------------------------
Jagger  234'234     <Null>
Jagger  <Null>      100'000

select Name, sum(Bewertung), sum(Leistung) from Stars
  group by Name

Name    Bewertung   Leistung        
---------------------------------------
Jagger  234'234     100'000


__/__/__/__/__/__/__/__/__/__/__/__/
Don't work
============
Name    Bewertung   WHRB    Leistung    WHRL
-------------------------------------------------------
Jagger  234'234     GBP     <Null>      <Null>
Jagger  <Null>      <Null>  100'000     GBP
Jagger  <Null>      <Null>   50'000     GBP

select Name, sum(Bewertung), WHRB, sum(Leistung), WHRL
  group by Name, WHRB, WHRL

Name    Bewertung   WHRB    Leistung    WHRL
-------------------------------------------------------
Jagger  234'234     GBP     <Null>      <Null>
Jagger  <Null>      <Null>  150'000     GBP

Ответы [ 3 ]

0 голосов
/ 08 ноября 2019

Один из вариантов - объединить эти два столбца (например, использовать MAX):

SQL> with stars (name, bewertung, whrb, leistung, whrl) as
  2    (select 'Jagger', 234234, 'GBP', to_number(null), to_char(null) from dual union all
  3     select 'Jagger', null, null, 100000, 'GBP' from dual
  4    )
  5  select name, sum(bewertung), max(whrb), sum(leistung), max(whrl)
  6  from stars
  7  group by name;

NAME   SUM(BEWERTUNG) MAX SUM(LEISTUNG) MAX
------ -------------- --- ------------- ---
Jagger         234234 GBP        100000 GBP

SQL>
0 голосов
/ 08 ноября 2019

Другое решение - создать 2 подзапроса с уникальными значениями.

select *
from   
(
    select Name, Bewertung, WHRB 
    from stars 
    where WHRB is not null
) a
full join 
(
    select Name, Leistung, WHRL 
    from stars 
    where WHRL is not null
) b using (Name)
0 голосов
/ 08 ноября 2019

Не уверен, что вы хотите что-то подобное, так как вы не опубликовали ожидаемый вывод:

   select Name, WHRB, WHRL,sum(Bewertung), sum(Leistung)
      group by nvl(Name, rownum),Name nvl(WHRB, WHRB),WHRB, nvl(WHRL, rownum),WHRL

Или вы можете игнорировать нулевые значения, агрегируя столбец WHRB, WHRL:

   select Name, sum(WHRB), sum(WHRL),sum(Bewertung), sum(Leistung)
      group by Name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...