sumowanei gdy w jednej z kolumn może być NULL
Andrzej Dąbrowski - 01-12-2005 20:34
sumowanei gdy w jednej z kolumn może być NULL
Witam! Proste pytanko dotyczące SQla: Mam 2 tabele któtre łączę LEFT JOINEM z których chciałbym zsumować po 1 kolumnie, sęk w tym że jedna z nich może czasem zawierać wartości NULL, wówczas w wyniku otrzymuję także Null - a marzeniem moim jest aby NULL potraktowano jak 0. Jak to zrobić jednym zapytaniem SQL, ew. zmeinić definicję tabeli?
SELECT EVENTS.EVENTS_ID,VA000A.VA000A_VALUE,VA000B.VA000B _VALUE, VA000A.VA000A_VALUE+VA000B.VA000B_VALUE SUMA FROM EVENTS LEFT JOIN VA000A ON EVENTS.EVENTS_ID=VA000A.EVENTS_ID LEFT JOIN VA000B ON EVENTS.EVENTS_ID=VA000B.EVENTS_ID
VA000A_VALUE VA000B_VALUE SUMA 10 5 15 23 NULL NULL - a chciałbym 23
Andrzej Dąbrowski
Morff - 01-12-2005 20:34
Dnia 01-12-2005 o 12:58:30 Andrzej Dąbrowski <andrzejd@sims.pl> napisał:
SELECT EVENTS.EVENTS_ID, nvl(VA000A.VA000A_VALUE,0) VA000A_VALUE, nvl(VA000B.VA000B_VALUE,0) VA000B_VALUE, nvl(VA000A.VA000A_VALUE,0)+nvl(VA000B.VA000B_VALUE ,0) SUMA FROM EVENTS LEFT JOIN VA000A ON EVENTS.EVENTS_ID=VA000A.EVENTS_ID LEFT JOIN VA000B ON EVENTS.EVENTS_ID=VA000B.EVENTS_ID
-- Pozdrawiam Morff ---------------------- AQQ 141151 Powered by Opera/M2
Piotr 'piter' Hlawski - 01-12-2005 20:34
Andrzej Dąbrowski wrote:
> Mam 2 tabele któtre łączę LEFT JOINEM z których chciałbym zsumować po 1 > kolumnie, sęk w tym że jedna z nich może czasem zawierać wartości NULL, > wówczas w wyniku otrzymuję także Null - a marzeniem moim jest aby NULL > potraktowano jak 0.
Dlaczego nie podałeś jaka to baza? To takie trudne? W mojej to będzie:
CASE WHEN pole IS NULL THEN 0 ELSE pole END
-- ..:: Piter // doom2@op.pl // gg: 4534287 ::. Z pszczołami nigdy nic nie wiadomo. Ani z misiami, prosiaczkami, królikami, sowami...
Proton - 01-12-2005 20:34
Użytkownik "Piotr 'piter' Hlawski" <doom2@op.pl> napisał w wiadomości news:2135690.LZkll2iQSA@zatoichi.homeunix.org... > Andrzej Dąbrowski wrote: > >> Mam 2 tabele któtre łączę LEFT JOINEM z których chciałbym zsumować po 1 >> kolumnie, sęk w tym że jedna z nich może czasem zawierać wartości NULL, >> wówczas w wyniku otrzymuję także Null - a marzeniem moim jest aby NULL >> potraktowano jak 0. > > Dlaczego nie podałeś jaka to baza? To takie trudne? > W mojej to będzie: > > CASE WHEN pole IS NULL THEN 0 ELSE pole END
A u mnie IFNULL(pole,0) -- pozdro Proton
Grzesiek G. - 01-12-2005 20:34
Andrzej Dąbrowski napisał(a): > Witam! > Proste pytanko dotyczące SQla: > Mam 2 tabele któtre łączę LEFT JOINEM z których chciałbym zsumować po 1 > kolumnie, sęk w tym że jedna z nich może czasem zawierać wartości NULL, > wówczas w wyniku otrzymuję także Null - a marzeniem moim jest aby NULL > potraktowano jak 0. Jak to zrobić jednym zapytaniem SQL, ew. zmeinić > definicję tabeli? > > SELECT EVENTS.EVENTS_ID,VA000A.VA000A_VALUE,VA000B.VA000B _VALUE, > VA000A.VA000A_VALUE+VA000B.VA000B_VALUE SUMA > FROM EVENTS > LEFT JOIN VA000A ON EVENTS.EVENTS_ID=VA000A.EVENTS_ID > LEFT JOIN VA000B ON EVENTS.EVENTS_ID=VA000B.EVENTS_ID > > VA000A_VALUE VA000B_VALUE SUMA > 10 5 15 > 23 NULL NULL - a > chciałbym 23 > > Andrzej Dąbrowski > > VA000A.VA000A_VALUE+COALESCE(VA000B.VA000B_VALUE,0 ).
A co to za straszne nazwy kolumn?
-- Grzegorz Gruza Odpowiadając usuń "spamerom_nie." z adresu!!!
Trzypion - 01-12-2005 20:34
On Thu, 1 Dec 2005 12:58:30 +0100, "Andrzej DÂąbrowski" <andrzejd@sims.pl> wrote:
>Proste pytanko dotyczące SQla: >Mam 2 tabele któtre łączę LEFT JOINEM z których chciałbym zsumować po 1 >kolumnie, sęk w tym że jedna z nich może czasem zawierać wartości NULL, >wówczas w wyniku otrzymuję także Null - a marzeniem moim jest aby NULL >potraktowano jak 0. Jak to zrobić jednym zapytaniem SQL, ew. zmeinić >definicję tabeli?
Dodać podzapytanie. Na przykład masz tabelę tab1 z kolumnami A, B, C, gdzie C jest ta z nullami. Robisz tak: Select A, B, CASE when is null then 0 else C from tab1
A łączysz z tabela tab2 np. po polu a tak:
select * from tab2 join (Select A, B, CASE when is null then 0 else C from tab1 AS TABA) on tab2.a=TABA.A
-- ___________ (R) /_ _______ Adam 'Trzypion' Płaszczyca (+48 502) 122 688 ___/ /_ ___ ul. Ludwiki 1 m. 74, 01-226 Warszawa _______/ /_ http://trzypion.oldfield.org.pl/fotk...rterka/II_MPL/ ___________/ GG: 3524356
Andrzej Dąbrowski - 01-12-2005 20:34
BD Firebird, dziękuję wszystkim znalazłem w międzyczasie COALESCE działa, CASE WHEN va000b.va000b_value IS NULL THEN 0 ELSE va000b.va000b_value END też, nvl(VA000B.VA000B_VALUE,0) nie działa, IFNULL nie działa. Dziękuję za pomoc. Andrzej Dąbrowski
Grzegorz Szyszlo - 03-12-2005 15:50
Proton napisał(a): > Użytkownik "Piotr 'piter' Hlawski" <doom2@op.pl> napisał w wiadomości > news:2135690.LZkll2iQSA@zatoichi.homeunix.org... > >>Andrzej Dąbrowski wrote: >> >> >>>Mam 2 tabele któtre łączę LEFT JOINEM z których chciałbym zsumować po 1 >>>kolumnie, sęk w tym że jedna z nich może czasem zawierać wartości NULL, >>>wówczas w wyniku otrzymuję także Null - a marzeniem moim jest aby NULL >>>potraktowano jak 0. >> >>Dlaczego nie podałeś jaka to baza? To takie trudne? >>W mojej to będzie: >> >>CASE WHEN pole IS NULL THEN 0 ELSE pole END > > > A u mnie IFNULL(pole,0)
A w mojej COALESCE(pole,0) ;) i jest to znacznie bardziej zgodne z definicją ansi sql ;) dziala nawet COALESCE(pole1,pole2,pole3), wtedy wybierze pierwsze nienulowate ;P no chyba ze same nulle sie trafia, wtedy trudno.
znik.
Grzegorz Szyszlo - 03-12-2005 15:50
Grzesiek G. napisał(a):
> VA000A.VA000A_VALUE+COALESCE(VA000B.VA000B_VALUE,0 ). > > A co to za straszne nazwy kolumn?
pewnie robione jakims generatorem.
znik.
Andrzej Dąbrowski - 03-12-2005 15:50
odgórnie narzucone bo sa to odpowiedniki adresów zmeinnych w urządzenaich fizycznych Użytkownik "Grzegorz Szyszlo" <znik@wbc.lublin.pl> napisał w wiadomości news:dmpgh5$mcg$2@news.lublin.pl... > Grzesiek G. napisał(a): > >> VA000A.VA000A_VALUE+COALESCE(VA000B.VA000B_VALUE,0 ). >> >> A co to za straszne nazwy kolumn? > > pewnie robione jakims generatorem. > > znik.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql] =?ISO-8859-2?Q?po=B3=B1czenie_tabel_wg_kolumn=2C_?==?ISO-8859-2?Q?nie_wierszy?=
ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?=
[ORACLE] Dodanie kolumny typu BLOB - =?ISO-8859-2?Q?wp=B3yw_na?==?ISO-8859-2?Q?_wydajno=B6c?=
=?ISO-8859-2?Q?=5BORACLE=2C_ORDER_BY=5D_Czy_indeksowane_?==?I SO-8859-2?Q?kolumny_przy=B6piesz=B1_sortowanie=3F?=
pytanie o zapytanie z having count = count z innej kolumny
[MySQL/PHP] Wyszukiwanie rekordu przez kolumnę wskazaną przez zmienną
[MySQL] Skopiowanie =?ISO-8859-2?Q?warto=B6ci_z_jednego_po?==?ISO-8859-2?Q?la_do_drugiego_w_jednej_tabeli=2C_r=F3=BFne_?= =?ISO-8859-2?Q?wiersze=2E?=
=?iso-8859-2?Q?=5BMSSQL2005=5D_Zawarto=B6c_kolumny_varbinary= 28max=29_?=
=?iso-8859-2?Q?=5BORACLE=5D_-_projekcja_kolumn_okre=B6lonego_typu?=
[SQL] W jaki sposób zwrócić wiersze które NIE znadują się w 2 pozostałych kolumnach
zanotowane.pldoc.pisz.plpdf.pisz.planette.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|