"He who thinks knows evertyhing, knows nothing" - Socrates
In SQL Server kan je bv. een CASE statement in je query verwerken. Met dat CASE statement kan je dan de waarde van die velden. Als een van die velden 0 is, zorg je ervoor dat hij de waarde van dat veld op 1 zet.
bv:
1
2
3
4
5
| SELECT @var1 = CASE veld1
WHEN 0 THEN 1
ELSE veld1
END
* @var2 = .... |
Wel pseudo-code, ik ken de syntax van dat CASE statement niet van buiten.
[ Voor 4% gewijzigd door whoami op 08-12-2003 15:51 ]
https://fgheysels.github.io/
Een andere oplossing om het in 1 query te doen zou ik niet zo snel weten.
Senile! Senile Oekaki
MySQL kent iets dergelijks met IF:
1
| SELECT IF(veld=0, 1, veld) ... |
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
1
2
3
4
| Select decode(waardeA,0,1,waardeA)
* decode(waardeB,0,1,waardeB)
* decode(waardeC,0,1,waardeC)
From tabel |
Ik maak gebruik van Sybasewhoami schreef op 08 december 2003 @ 15:51:
Welk DBMS gebruik je?
In SQL Server kan je bv. een CASE statement in je query verwerken. Met dat CASE statement kan je dan de waarde van die velden. Als een van die velden 0 is, zorg je ervoor dat hij de waarde van dat veld op 1 zet.
"He who thinks knows evertyhing, knows nothing" - Socrates
Kun je ze niet voordat je ze in je query stopt controleren en eventueel veranderen?
Pas de replâtrage, la structure est pourrie.
Verwijderd
En vanaf Oracle 8.1.x zelfs ook een case select in een queryDanfoss schreef op 08 december 2003 @ 15:56:
Met Oracle kan je een decode gebruiken:
code:
1 2 3 4Select decode(waardeA,0,1,waardeA) * decode(waardeB,0,1,waardeB) * decode(waardeC,0,1,waardeC) From tabel
Maar ik zie net dat het om Sybase gaat
Ik heb het uiteindelijk zo opgelost:
1
2
3
4
5
6
7
8
9
10
11
12
| "AantalM2" =
(SELECT SUM (CASE t3.UnitCode
WHEN 1 THEN
(t2.Qty * t3.SquareMeasure)
WHEN 2 THEN
(t2.Qty * t2.Length * t3.SquareMeasure)
WHEN 3 THEN
(t2.Qty * t2.Length * t2.Width * t3.SquareMeasure)
END)
From T_ProdBillOfMat t2, T_Part t3
Where t2.SubPartCode = t3.PartCode AND
t2.ProdHeaderDossierCode = t1.ProdHeaderDossierCode |
"He who thinks knows evertyhing, knows nothing" - Socrates
weet niet of je ook wiskundige functies kunt gebruiken anders kun je iets doen in de trend van:
1
| max(1, getal_1) * getal_2 * getal_3 |
Dan is een IF (kolom=0, 1, kolom) misschien makkelijker
1
| select IF(k1=0, 1, k1) * IF(k2=0, 1, k2) * IF(k3=0, 1, k3) FROM tabel |
.edit: was al gezegd
[ Voor 12% gewijzigd door .oisyn op 08-12-2003 19:11 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Zou zeker makkelijker zijn, maar dit wordt niet ondersteund door Sybase.oisyn schreef op 08 december 2003 @ 18:02:
die max lijkt me wat minder handig, dan worden dingen als 0.5 ook niet meegerekend.
Dan is een IF (kolom=0, 1, kolom) misschien makkelijker
SQL:
1 select IF(k1=0, 1, k1) * IF(k2=0, 1, k2) * IF(k3=0, 1, k3) FROM tabel
.edit: was al gezegd
"He who thinks knows evertyhing, knows nothing" - Socrates
1
| SELECT SUM(A,B,C) WHERE a>0 AND b>0 AND c>0 |
of denk ik nu te simpel
[ Voor 12% gewijzigd door Suepahfly op 08-12-2003 23:01 ]
Ik denk simpel dat je gewoon niet goed leest
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz