Bonjour à tous,

j'aimerai savoir s'il est possible de mettre en place une sorte de système "CASE WHEN" afin de choisir entre 2 "INNER JOIN".
Voici la requête en question:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
SELECT CRUIS.ID_BKIN ,CRUIS.TITI ,CRUIS.TATA, CRUIS.ID_BKCS ,  CRUIS.BOOKINGSTATUSCODE,CRUIS.CATEGORYCODE 
FROM [dbo].[ODS_BKCS_CRUISE_SAILING] CRUIS 
     INNER JOIN 
     (              SELECT TOTO.ID_BKIN ,TOTO.TITI ,TOTO.TATA, MAX(TOTO.ID_BKCS) as MAX_ID_BKCS             
                    FROM [dbo].[ODS_BKCS_CRUISE_SAILING] TOTO
                    GROUP BY TOTO.ID_BKIN ,TOTO.TITI,TOTO.TATA 
     ) TOTOG
     ON CRUIS.ID_BKIN = TOTOG.ID_BKIN AND CRUIS.ID_BKCS = TOTOG.MAX_ID_BKCS
J'aimerai que si :
"SELECT COUNT(DISTINCT ID_BKCS )
FROM [dbo].[ODS_BKCS_CRUISE_SAILING] CRUIS
GROUP BY ID_BKIN
HAVING COUNT(CustomerID) > 1;"

alors j'utilise cette jointure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
	 SELECT CRUIS.ID_BKIN ,CRUIS.TITI ,CRUIS.TATA, CRUIS.ID_BKCS , CRUIS.BOOKINGSTATUSCODE,CRUIS.CATEGORYCODE 
     FROM DWH_BOOKING.[dbo].[ODS_BKCS_TUTU_SAILING] CRUIS 
     INNER JOIN 
                (SELECT CRUISG.ID_BKIN ,CRUISG.TITI ,CRUISG.TATA, MAX(CRUISG.ID_BKCS) as MAX_ID_BKCS  FROM DWH_BOOKING.[dbo].[ODS_BKCS_TUTU_SAILING] CRUISG 
				INNER JOIN DWH_BOOKING.[dbo].[ODS_BKCP_TUTU_PARTICIPANT] CRUIP ON CRUISG.ID_SOURCE = CRUIP.ID_SOURCE and CRUISG.ID_BKCS = CRUIP.ID_BKCS
				INNER JOIN  DWH_BOOKING.[dbo].[ODS_BKPA_PARTICIPANT] PA    ON CRUIP.ID_SOURCE = PA.ID_SOURCE and PA.PASSENGERNO = CRUIP.PASSENGERNO
				where PA.MARKETINGID is not null and CRUISG.BOOKINGSTATUSCODE <> 'CXL' GROUP BY CRUISG.ID_BKIN ,CRUISG.TITI,CRUISG.TATA
Sinon j'utilise celle-là:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
SELECT CRUIS.ID_BKIN ,CRUIS.TITI ,CRUIS.TATA, CRUIS.ID_BKCS ,  CRUIS.BOOKINGSTATUSCODE,CRUIS.CATEGORYCODE 
FROM [dbo].[ODS_BKCS_CRUISE_SAILING] CRUIS 
     INNER JOIN 
     (              SELECT TOTO.ID_BKIN ,TOTO.TITI ,TOTO.TATA, MAX(TOTO.ID_BKCS) as MAX_ID_BKCS             
                    FROM [dbo].[ODS_BKCS_CRUISE_SAILING] TOTO
                    GROUP BY TOTO.ID_BKIN ,TOTO.TITI,TOTO.TATA 
     ) TOTOG
     ON CRUIS.ID_BKIN = TOTOG.ID_BKIN AND CRUIS.ID_BKCS = TOTOG.MAX_ID_BKCS
Merci à tous !