2012-10-18 4 views
1

Je vous écris une requête SQL à être utilisé pour SSRS 2005 qui estChoisissez maximum parmi Doublons

select t1.Category, t2.condition,'1' as hasCondition from t1 
left outer join t2 on t1.ID = t2.ID 
left outer join t3 on t2.cID = t3.cID 
where t3.clientID = 6 

union 

select t1.Category, t2.condition, '0' as hasCondition from t1 
left outer join t2 on t1.ID = t2.ID 

et renvoie les données:

Category   Condition   hasCondition 

Behavioural  Tourette's Syndrome   0 
Communications Impaired Speech    0 
Dexterity   Osteoarthritus    0 
Dexterity   Osteoporosis    0 
Dexterity   Other Dexterity    0 
Dexterity   Rheumatoid Arthritus  0 
Emotional   Bipolar Disorder   0 
Emotional   Clinical Depression  0 
Emotional   Depression     0 
Emotional   Depression     1 
Emotional   Gulf War Syndrome   0 
Emotional   Gulf War Syndrome   1 

Maintenant, je veux choisir un seul record de doublons lignes/résultats par exemple: Catégorie-Emotional, condition-Dépression qui aCondition '1' ou 'true'

J'espère avoir fait clair en utilisant l'exemple. S'il vous plaît aidez-moi.

Merci.

Répondre

0

Ce n'est pas clair à 100% ce que vous voulez, mais je pense que vous êtes à la recherche pour le MAX() du dernier champ ...

SELECT 
    category, condition, MAX(has_condition) AS hasCondition 
FROM 
(
    select t1.Category, t2.condition,'1' as hasCondition from t1 
    left outer join t2 on t1.ID = t2.ID 
    left outer join t3 on t2.cID = t3.cID 
    where t3.clientID = 6 

    union 

    select t1.Category, t2.condition, '0' as hasCondition from t1 
    left outer join t2 on t1.ID = t2.ID 
) 
    AS data 
GROUP BY 
    category, condition 

Si vous vouliez simplifier cet ensemble requête ...

select 
    t1.Category, 
    t2.condition, 
    MAX(CASE WHEN t3.clientID = 6 THEN 1 ELSE 0 END) as hasCondition 
    from 
    t1 
    left outer join 
    t2 
     on t2.ID = t1.ID 
    left outer join 
    t3 
     on t3.cID = t2.cID 
     and t3.clientID = 6 
    group by 
    t1.Category, 
    t2.condition 
+0

Oui votre version simplifiée a fonctionné Mate! Je vous remercie. –

0
SELECT category, condition, MAX(hasCondition) 
FROM (
    select t1.Category, t2.condition,'1' as hasCondition from t1 
    left outer join t2 on t1.ID = t2.ID 
    left outer join t3 on t2.cID = t3.cID 
    where t3.clientID = 6 

    union 

    select t1.Category, t2.condition, '0' as hasCondition from t1 
    left outer join t2 on t1.ID = t2.ID) 
GROUP BY category, condition 
Questions connexes