webForumDet fria alternativet

Mecka om en sqlsats - plocka ut även tomma fält, typ.

Databaser & SQL

7 svar · 330 visningar · startad av solbulle

Medlem sedan mars 20015 287 inlägg
Frågan#1

Jag har denna sql-sats, men som den ser ut nu plockar den (givetvis...) bara ut dem som uppfyller alla villkor, jag vill att den ska plocka ut kundnummer mm men bara sum(belopp) där villkoret order = 1 eller order = 2 uppfylls.
Någon som förstår och kan?
(SQL-Base, Gupta)

select kund.kundnr, sum(belopp) 
 from datab, kund where
 datab.kundnr = kund.kundnr
 and kund.dist = '200' 
 and vecka >= '2004-30' 
 and vecka <= '2004-41' 
 and kund.status='Aktiv'  
 and datab.kundnr in 
 (select kundnr from datab where
 vecka >= '2004-30' 
 and vecka <= '2004-41' 
 and (order = 1 or (order = 2)) 
 group by kund.kundnr
Medlem sedan dec. 200012 464 inlägg
#2
select kund.kundnr, case when order = 1 or order = 2 then
sum(belopp) end,
 from datab, kund where
 datab.kundnr = kund.kundnr
 and kund.dist = '200' 
 and vecka >= '2004-30' 
 and vecka <= '2004-41' 
 and kund.status='Aktiv'  
 and datab.kundnr in 
 (select kundnr from datab where
 vecka >= '2004-30' 
 and vecka <= '2004-41' 
 and (order = 1 or (order = 2)) 
 group by kund.kundnr
Medlem sedan mars 20015 287 inlägg
#3

Hm... det vill sig inte riktigt.

Körfel nr '-2147217900 (80040e14)'.:

[INTERSOLV][ODBC SQLBase driver][SQLBase]00902 PRS MFC Missing
FROM clause

???

Medlem sedan dec. 200012 464 inlägg
#4

Så SQL base tycker inte om case. Finns det någon iif/decode/value funktion kanske?

Medlem sedan mars 20015 287 inlägg
#5

Ja du... inte den blekaste aning.. :(

Medlem sedan dec. 200012 464 inlägg
#6
select kund.kundnr, sum(belopp) ,
 from datab, kund where
 datab.kundnr = kund.kundnr
 and kund.dist = '200' 
 and vecka >= '2004-30' 
 and vecka <= '2004-41' 
 and kund.status='Aktiv'  
 and datab.kundnr in 
 (select kundnr from datab where
 vecka >= '2004-30' 
 and vecka <= '2004-41' 
 and (order = 1 or order = 2) 
 group by kund.kundnr
union all
select kund.kundnr, -1 ,
 from datab, kund where
 datab.kundnr = kund.kundnr
 and kund.dist = '200' 
 and vecka >= '2004-30' 
 and vecka <= '2004-41' 
 and kund.status='Aktiv'  
 and datab.kundnr in 
 (select kundnr from datab where
 vecka >= '2004-30' 
 and vecka <= '2004-41' 
 and (order <> 1 and order <> 2) 
 group by kund.kundnr
Medlem sedan mars 20015 287 inlägg
#7

Nej du, jag får samma fel på den. Det känns lite som om det kanske är jag som knasar till det. Eller...

Medlem sedan dec. 200012 464 inlägg
#8

Hmm, jag såg att jag slarvat dit ett extra komma precis innan from i alla mina select-satser.

257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)