2011-10-12 1 views
1

Je souhaite sélectionner des valeurs spécifiques à partir d'une table appelée Prescriptions. Je veux sélectionner un patient qui utilise les médicaments suivants à un certain moment:Je souhaite sélectionner des valeurs spécifiques à partir d'une table SQL Server

Ceci est le choix que j'ai utilisé, mais il renvoie les patients qui utilisent seulement un ou deux des médicaments. Je veux être en mesure d'apporter seulement le patient qui utilise les deux médicaments:

SELECT MEDICINE, CLIENTNUMBER 
FROM PRESCRIPTIONS 
where 
(MEDICINE like 'simvastatin %' OR 
MEDICINE like 'amlodipine%') 
AND 
DATE between '11/23/2010' and '11/23/2010' 
Group by CLIENTNUMBER, MEDICINE 
Order by CLIENTNUMBER 

Quelqu'un peut-il aider? Merci beaucoup!

Répondre

1

Essayez ceci:

SELECT p1.Medicine m1, p2.Medicine m2, p1.ClientNumber cn 
FROM Prescriptions p1 INNER JOIN Prescriptions p2 
ON p1.ClientNumber = p2.ClientNumber 
WHERE (
    ((m1 LIKE 'simvastatin %') AND (m2 LIKE 'amlodipine%')) OR 
    ((m2 LIKE 'simvastatin %') AND (m1 LIKE 'amlodipine%')) 
    AND Date BETWEEN '11/23/2010' AND '11/23/2010') 
GROUP BY cn, m1 
ORDER BY cn 
+0

On dirait que cela retourne deux médicaments sur une ligne. Devrait être une petite solution bien. – Andomar

1

Vous pouvez utiliser deux clauses exists pour assurer que le client dispose d'abonnements pour les médicaments:

select p.MEDICINE 
,  p.CLIENTNUMBER 
from PRESCRIPTIONS as p 
where p.DATE between '11/23/2010' and '11/23/2011' 
     and exists 
     (
     select * 
     from PRESCRIPTIONS as p2 
     where p2.DATE between '11/23/2010' and '11/23/2011' 
       and p2.CLIENTNUMBER = p.CLIENTNUMBER 
       and p2.MEDICINE like 'simvastatin %' 
     ) 
     and exists 
     (
     select * 
     from PRESCRIPTIONS as p3 
     where p3.DATE between '11/23/2010' and '11/23/2011' 
       and p3.CLIENTNUMBER = p.CLIENTNUMBER 
       and p3.MEDICINE like 'amlodipine %' 
     ) 
+0

Merci! Cela a fonctionné, mais c'est aussi le retour d'autres médicaments pour ce patient pendant cette période, comment pourrais-je le filtrer pour qu'il ne renvoie que les produits que je veux? – user734781

0

vous devez créer une table pour votre medician une puis obtenir division prescription sur elle.

Questions connexes