sql-server, SI la déclaration dans les Requêtes SQL
Je vais avoir des ennuis avec l'aide d'un IF
de la déclaration dans ce sql-server query.
Ce que je veux:
Si salesHeader.[Ship-to Name]
n'est pas nulle, j'ai besoin de retour que DeliveryName, si elle est nulle, de retour quelque chose d'autre.
Est-il un moyen de faire cela avec un if
instruction d'une requête?
SELECT
poHeader.No_ AS PONumber,
poHeader.[Buy-from Vendor No_] AS VendorNumber,
poHeader.[Document Date] AS DocDate,
salesHeader.GiftMessage,
salesHeader.[Delivery Comment] AS DeliveryComment,
salesHeader.[Shipment Date] AS DeliveryDate,
IF salesHeader.[Ship-to Name] IS NOT NULL
salesHeader.[Ship-to Name] AS DeliveryName
ELSE
poHeader.[Ship-to Name] AS DeliveryName
END
FROM
dbo.[Crocus Live$Purch_ orders for e-mailing] AS poForEmailing
LEFT OUTER JOIN
dbo.[Crocus Live$Purchase Header] AS poHeader ON poForEmailing.No_ = poHeader.No_
INNER JOIN
dbo.[Crocus Live$Vendor] AS vendor ON poHeader.[Buy-from Vendor No_] = vendor.No_
LEFT OUTER JOIN
dbo.[Crocus Live$Sales Header] AS salesHeader ON salesHeader.No_ = dbo.fnGetSalesOrderNumber(poHeader.No_)
Vous devez vous connecter pour publier un commentaire.
Ou de l'utilisation FUSIONNENT...
FUSIONNENT sera de retour la première valeur non NULLE dans la liste
CAS d'utilisation, pas SI
Edit:
Les deux FUSIONNENT et ISNULL réponses donner dans d'autres réponses sont tout aussi valables aussi pour ce cas particulier (et plus simple, franchement)
Vous pouvez CAS d'utilisation:
Ou dans cette situation, vous pouvez utiliser FUSIONNENT ou ISNULL:
Que ce gbn dit, CAS d'utilisation déclaration de la place.
Depuis qu'il a déjà fait le codage, donc je n'ai pas envie de faire la même chose à nouveau.
Au lieu de simplement vous donner quelques site à consulter pour votre compréhension
un)
SQL SERVER Instruction de CAS/Exemples d'expressions et d'Explication
b) CAS de la fonction dans SQL Server 2005 - partie I
c) CAS de la fonction dans SQL Server 2005 - partie II
d) CAS de la Fonction dans SQL Server 2005 - partie III
Est pas sûr, mais vous n'avez pas à mettre l'DeliveryName' à l'extérieur le SI?
Au moins c'est la façon dont il fonctionne dans MySQL...