2011-10-12 81 views
1

我想从名为Prescriptions的表中选择特定值。我想选择在一定时间段内使用以下药物的患者:我想从SQL Server表中选择特定值

这是我一直在使用的选择,但它返回仅使用一种或两种药物的患者。我希望能够为患者提供两种药物:

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 

任何人都可以帮忙吗?非常感谢你!

回答

1

试试这个:

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

看起来这是一排回来的两种药物。应该是一个小的修复,但。 – Andomar

1

您就可以使用两个exists条款,以确保客户端有两种药品订阅:

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

谢谢!它的工作,但也为那段时间的病人返回其他药物,我怎么能过滤它,所以它只会返回我想要的那些产品? – user734781

0

,你必须为你的medician的然后让分裂创建一个表处方就可以了。