-3

SQL SERVER 2008 R2 を使用しています。

私のクエリ結合は次のようなものです:

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

オブジェクトは、テーブル 'LS_CLIENT_DEPT' の列 DEPARTEMENT が 'NOT NULL' の場合、この列の値を使用し、それ以外の場合は、テーブル 'T_TARIF_ZONE' の列 DEPARTEMENT の値を使用します。

よろしくお願いします

4

1 に答える 1

2

あなたが望むように聞こえます:

COALESCE(LS_CLIENT_DEPT.DEPARTEMENT, T_TARIF_ZONE.DEPARTEMENT)

LS_Client_Deptそのため、null でない場合はDepartment from を取得し、null の場合はT_TARIF_ZONE代わりに Department from を返します (ただし、これも null の可能性があります)。

Coalesce に関する MSDN ドキュメント

于 2013-01-07T09:50:36.873 に答える