2013-01-07 78 views
-3

我正在使用SQL SERVER 2008 R2。SQL加入條件

我的查詢聯接是這樣的:

SELECT dbo.TARIF_COURANT.CODE_TARIF, 
dbo.TARIF_COURANT.NO_CLIENT,dbo.TARIF_COURANT.ZONE, dbo.TARIF_COURANT.UNITE, 
dbo.TARIF_COURANT.LIBELLE, dbo.TARIF_COURANT.TR_DEB, dbo.TARIF_COURANT.TR_FIN, 
dbo.TARIF_COURANT.MONTANT,dbo.T_TARIF_ZONE.LIBELLE AS ZONELIB, 
dbo.T_TARIF_ZONE.DEPARTEMENT, dbo.T_TARIF_ZONE.DELAI 
FROM dbo.TARIF_COURANT LEFT OUTER JOIN dbo.T_TARIF_ZONE ON 
dbo.TARIF_COURANT.ZONE = dbo.T_TARIF_ZONE.NO_ID 
WHERE (dbo.TARIF_COURANT.TEMPO = 2) AND 
(dbo.TARIF_COURANT.ZONE IN (1, 2, 3, 4, 6)) 
ORDER BY dbo.TARIF_COURANT.TR_DEB 

現在我添加另一個表LS_CLIENT_DEPT,我修改我的加盟:

SELECT dbo.TARIF_COURANT.CODE_TARIF, dbo.TARIF_COURANT.NO_CLIENT, 
dbo.TARIF_COURANT.ZONE, dbo.TARIF_COURANT.UNITE, dbo.TARIF_COURANT.LIBELLE, 
dbo.TARIF_COURANT.TR_DEB, dbo.TARIF_COURANT.TR_FIN, dbo.TARIF_COURANT.MONTANT, 
dbo.T_TARIF_ZONE.LIBELLE AS ZONELIB, dbo.LS_CLIENT_DEPT.DEPARTEMENT, 
dbo.T_TARIF_ZONE.DELAI 
FROM dbo.TARIF_COURANT LEFT OUTER JOIN dbo.T_TARIF_ZONE ON 
dbo.TARIF_COURANT.ZONE = dbo.T_TARIF_ZONE.NO_ID 
LEFT OUTER JOIN dbo.LS_CLIENT_DEPT ON dbo.TARIF_COURANT.NO_CLIENT = 
dbo.LS_CLIENT_DEPT.CODE_CLIENT AND dbo.TARIF_COURANT.ZONE = 
dbo.LS_CLIENT_DEPT.ZONE 
WHERE (dbo.TARIF_COURANT.TEMPO = 2) AND (dbo.TARIF_COURANT.ZONE IN (1, 2, 3, 
4, 6)) ORDER BY dbo.TARIF_COURANT.TR_DEB 

目的是如果列DEPARTEMENT表「LS_CLIENT_DEPT」是'NOT NULL',那麼使用此列值,否則使用表'T_TARIF_ZONE'中的DEPARTEMENT列值

在此先感謝您

回答

2

聽起來像是你想:

COALESCE(LS_CLIENT_DEPT.DEPARTEMENT, T_TARIF_ZONE.DEPARTEMENT) 

因此將需要從部門如果LS_Client_Dept它不爲空,如果爲空,則返回從T_TARIF_ZONE代替處(這可能是空過,不過)。

MSDN Documentation on Coalesce