🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.bazy-danych
3 messages
3 total messages Started by Adam Fri, 17 Feb 2017 23:28
[MSSQL] Zagnieżdżony SELECT i NULL
#195239
Author: Adam
Date: Fri, 17 Feb 2017 23:28
81 lines
2882 bytes
Witajcie.

Problem chyba trywialny, ale nie mogę przeskoczyć.

Za pomocą BCP.EXE z pakietu MS SQL 2012  wołam  zapytanie SQL, którego 
wynik leci do pliku.

Utknąłem na zwracaniu NULL tam, gdzie powinno być zero.

Przygotowałem skrypcik, aby zobrazować:

===[start skrypt===================================

CREATE TABLE #tmpTowar
	(
	T_Kod nvarchar(20) NOT NULL unique,
	T_Nazwa nvarchar(50) NOT NULL,
	)

CREATE TABLE #tmpDostawa
	(
	D_NrDokum nvarchar(20) NOT NULL,
	D_Kod nvarchar(20) NOT NULL ,
	D_Ilosc int NOT NULL,
	)

	
insert into #tmpTowar  values ('M-01','marchew')
insert into #tmpTowar  values ('P-03','pietruszka')
insert into #tmpTowar  values ('S-02','seler')
insert into #tmpTowar  values ('R-01','rzodkiew')
insert into #tmpTowar  values ('K-77','kapusta')

insert into #tmpDostawa  values ('F12/17','S-02', 32)
insert into #tmpDostawa  values ('F33/17','S-02', 10)
insert into #tmpDostawa  values ('FV134/2017','P-03', 12)
insert into #tmpDostawa  values ('FZ45/R','D-07', 30)
insert into #tmpDostawa  values ('1332/B','R-01', 20)
insert into #tmpDostawa  values ('FSD4433/R17','R-01', 100)
insert into #tmpDostawa  values ('FD433/017','Z-33', 200)

select * from #tmpTowar	
select * from #tmpDostawa


/*	
PYTANIE: jak w poniższym zapytaniu uzyskać wyświetlanie	0 (zero) zamiast 
NULL dla towarów,
które nie mają dostaw?
*/
	
select T_Kod, T_Nazwa, 	
	(select SUM(D_Ilosc) from #tmpDostawa where D_Kod = T_Kod)
	from #tmpTowar
		
		
drop table #tmpTowar
drop table #tmpDostawa

===[stop skrypt====================================

Oczywiście mój prawdziwy skrypt jest wielokrotnie większy, ale to bez 
znaczenia.

Chodzi o środkowy select SUM().
Aktualnie dla towarów bez stanu magazynowego jest zwracany NULL, 
potrzebuję zero.

Próbowałem go "ubrać" w ISNULL(SELECT, 0)
próbowałem zamknąć w IF
i może jeszcze jakiś CAST czy IFEXIST...ELSE
no i nie udało mi się uzyskać zera zamiast null.


Jak to zrobić?


-- 
Pozdrawiam.

Adam
Re: [MSSQL] Zagnieżdżony SELECT i NULL
#195240
Author: geos
Date: Sat, 18 Feb 2017 07:54
13 lines
1221 bytes
On 18.02.2017 00:28, Adam wrote:
> select T_Kod, T_Nazwa,
>     (select SUM(D_Ilosc) from #tmpDostawa where D_Kod = T_Kod)
>     from #tmpTowar

coalesce:

select t_kod, t_nazwa,
     (select coalesce(sum(d_ilosc),0) from #tmpdostawa where d_kod = t_kod)
     from #tmpTowar

pozdrawiam,
geos
Re: [MSSQL] Zagnieżdżony SELECT i NULL
#195241
Author: Adam
Date: Sat, 18 Feb 2017 09:01
23 lines
1336 bytes
W dniu 2017-02-18 o 08:54, geos pisze:
> On 18.02.2017 00:28, Adam wrote:
>> select T_Kod, T_Nazwa,
>>     (select SUM(D_Ilosc) from #tmpDostawa where D_Kod = T_Kod)
>>     from #tmpTowar
>
> coalesce:
>
> select t_kod, t_nazwa,
>     (select coalesce(sum(d_ilosc),0) from #tmpdostawa where d_kod = t_kod)
>     from #tmpTowar
>
> pozdrawiam,
> geos


Dzięki :)


-- 
Pozdrawiam.

Adam
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads