2014-07-25 6 views
0

enter image description heresélectionner la table en utilisant une requête compliquée

J'ai 2 tables avec les champs ci-dessus.

J'ai créé ci-dessous requête

SELECT DISTINCT H.HolidayId,H.HolidayDate,H.Description,CH.ClientId, 
     case when CH.HolidayId is not null then 1 else 0 end as IsHoliday 
     FROM Holiday H LEFT JOIN ClientHolidays CH ON h.HolidayId = CH.HolidayId 

enter image description here

Mais je dois énumérer toutes les vacances avec le champ IsHoliday si le client a ajouté que les vacances puis le terrain IsHoliday devrait venir comme 1 autre 0

Et lors de l'interrogation avec ClientId. Il devrait énumérer tous les jours fériés dépendent de clientId

J'ai besoin de résultat comme ci-dessous

enter image description here

En passant id client j'ai besoin pour obtenir toutes les vacances avec le champ IsHoliday devrait venir comme 0 ou 1

+0

C'est ce que vous faites dans la ri8 de requête ci-dessus? – Azar

+0

J'ai besoin de la liste en fonction de l'ID client – HarisJayadev

+1

Quel est votre résultat attendu? – Jesuraja

Répondre

0

Je l'ai utilisé vos requêtes après 2 jours seulement j'ai trouvé bug dans ce . alors j'ai trouvé une solution pour ça.

est inférieure à la solution:

SELECT h.HolidayId, HolidayDate,Description,CASE WHEN ClientID IS NULL THEN 0 WHEN ClientID != @ClientId THEN 0 ELSE 1 END AS IsHoliday 
         FROM HOLIDAY h LEFT OUTER JOIN CLIENTHOLIDAYS ch ON ch.HolidayId = h.HolidayId 
         WHERE ClientId = @ClientId OR ClientID is null or ClientID is not null 

Merci

0

Essayez cette

SELECT DISTINCT H.HolidayId 
    ,H.HolidayDate 
    ,H.Description 
    ,CH.ClientId 
    ,CASE 
     WHEN CH.clientid IS NOT NULL 
      THEN 1 
     ELSE 0 
     END AS IsHoliday 
FROM Holiday H 
LEFT JOIN ClientHolidays CH 
    ON h.HolidayId = CH.HolidayId 
+0

C'est la liste de toutes les vacances – HarisJayadev

+0

Voilà ce que vous voulez ri8, vous voulez la liste de toutes les vacances, mais 1 si elle est dans le client 0 – Azar

2

Essayez ci-dessous requête, il fonctionnera selon l'exigence :)

SELECT h.HolidayId, HolidayDate, 
CASE WHEN ClientID IS NULL THEN 0 ELSE 1 END AS IsHoliday 
FROM HOLIDAY h 
LEFT OUTER JOIN CLIENTHOLIDAYS ch ON ch.HolidayId = h.HolidayId 
WHERE ClientId = 1 OR ClientID is null 
+0

Si cela a fonctionné, marquez-la comme réponse correcte/acceptée – roopaliv

0

Essayez ceci:

SELECT DISTINCT H.HolidayId,H.HolidayDate,H.Description, 
     CASE WHEN CH.HolidayId IS NOT NULL THEN 1 ELSE 0 END AS IsHoliday 
FROM Holiday H LEFT JOIN 
     ClientHolidays CH ON h.HolidayId = CH.HolidayId 
WHERE CH.ClientId = 8 OR CH.ClientId IS NULL 
0

A partir de vos commentaires que je reçois le sens que vous ne voulez pas tous les jours fériés. Vous voulez juste les vacances pour chaque client. Si tel est le cas, vous devez utiliser un inner join. Également dans ce scénario, le champ isHoliday est sans objet parce que vous obtenez seulement les résultats pour les vacances que les clients prennent en fait donc est un jour férié sera toujours 1.

SELECT H.HolidayId,H.HolidayDate,H.Description,CH.ClientId, 
     case when CH.HolidayId is not null then 1 else 0 end as IsHoliday 
FROM Holiday H inner JOIN 
ClientHolidays CH 
ON h.HolidayId = CH.HolidayId 
Questions connexes