Comment puis-je obtenir une valeur par défaut de 0 si une somme ne renvoie aucune ligne?Comment obtenir SQL Server pour renvoyer une valeur par défaut de 0, si aucune ligne n'existe?
Edit: J'ai édité ce post pour ajouter un exemple plus complet (que le précédent n'a pas rencontré)
Par ex
DECLARE @Item TABLE
(
Id int,
Price decimal,
PricePer decimal
)
DECLARE @OrderItem TABLE
(
Id int,
ItemId int,
ChargedPrice nvarchar(10),
QtyRequired int,
QtyLeftToDespatch int
)
INSERT INTO @Item (Id,Price,PricePer) VALUES (1,1.00, 1)
INSERT INTO @Item (Id,Price,PricePer) VALUES (2,2.00, 1)
INSERT INTO @Item (Id,Price,PricePer) VALUES (3,3.00, 1)
INSERT INTO @Item (Id,Price,PricePer) VALUES (4,4.00, 1)
INSERT INTO @OrderItem (Id, ItemId,ChargedPrice,QtyRequired,QtyLeftToDespatch) VALUES (1,1,100,100,50)
INSERT INTO @OrderItem (Id, ItemId,ChargedPrice,QtyRequired,QtyLeftToDespatch) VALUES (2,1,200,300,50)
INSERT INTO @OrderItem (Id, ItemId,ChargedPrice,QtyRequired,QtyLeftToDespatch) VALUES (3,1,300,300,50)
DECLARE @ItemIdTest int
SET @ItemIdTest = 4
SELECT SUM((price/priceper)*QtyRequired) as total_value,
SUM((price/priceper)*QtyRequired) as outstanding_value
FROM @Item i
INNER JOIN @OrderItem o ON i.Id = o.ItemId
WHERE i.Id = @ItemIdTest
group by itemId
Cela renverra
total_value, outstanding_value
==============
<No rows>
Mais je veux qu'il y ait 0 comme valeur par défaut est revenu. Cependant, si vous faites un SELECT pour le sélectionner, puis un second SELECT pour sélectionner un défaut, 2 ensembles de résultats seront retournés.
Puis-je le faire en un? J'ai regardé COALESCE, mais cela ne fonctionne que si NULL est retourné, ce qui n'est pas le cas.
Édition: Je pense que le problème est lié au groupe, mais y a-t-il une raison pour laquelle il ne revient pas avec des résultats?
J'ai changé l'exemple, qui connaît l'erreur, plutôt que celui que j'ai créé avant –