0

〜52,000のレコードを持つtblDumpがあります。これは、対応する投与時間を持つ ID のリストです。関連する変数はSubjectNumber、、、、RECDATEです。各患者は 1 日 2 回投与するため、とperがあります。これを表示するために、これまでにこれを持っています:RECTIMEFoodTypeMin(RECTIME)Max(RECTIME)RECDATE

 SELECT tblDump.SubjectNumber, tblDump.RECDATE, 
        Min(RECTIME) As MornDose, Max(RECTIME) As EveDose
 FROM tblDump
 GROUP BY tblDump.SubjectNumber, tblDump.RECDATE
 ORDER BY tblDump.SubjectNumber, tblDump.RECDATE Asc;

変数FoodTypeには、1、2、または 3 の 3 つの可能性があります。1 日あたり 1 に関連付けられ、3 に関連付けられMin(RECTIME)ている Subjects を出力する必要があります。Max(RECTIME)

forとforHAVINGのようなステートメントを作成しようとしましたが、言語学を正しく理解できません。Foodtype = 1Min(RecTIME)Foodtype = 3Max(RECTIME)

解決済み:

わかりました、これを行うためのより効率的な方法があると確信していますが、これは機能します。うまくいけば、これは誰かまたは誰かがより効率的な方法を投稿するのに役立ちます. 3 つのクエリを使用しました。1 つは最小投与時間用、もう 1 つは最大投与時間用、もう 1 つはそれらを結合するためのものです。

qryMin:

SELECT a.SubjectNumber, a.RECDATE, First(a.colm AS MornDose), First(m.FoodType)
FROM (SELECT SubjectNumber, RECDATE, MIN(RECTIME) as colm 
      FROM tblDump GROUP BY SubjectNumber, RECDATE)  AS a 
INNER JOIN tblDump AS m 
        ON (a.colm=m.RECTIME) 
           AND (a.RECDATE = m.RECDATE) 
           AND (a.SubjectNumber = m.SubjectNumber)
GROUP BY a.SubjectNumber, a.RECDATE
ORDER BY a.SubjectNumber, a.RECDATE;

qryMax:

SELECT a.SubjectNumber, a.RECDATE, First(a.colm) AS MornDose, First(m.FoodType)
FROM (SELECT SubjectNumber, RECDATE, MAX(RECTIME) AS colm 
      FROM tblDump GROUP BY SubjectNumber, RECDATE)  AS a 
INNER JOIN tblDump AS m 
        ON (a.SubjectNumber = m.SubjectNumber) 
           AND (a.RECDATE = m.RECDATE) 
           AND (a.colm = m.RECTIME)
GROUP BY a.SubjectNumber, a.RECDATE
ORDER BY a.SubjectNumber, a.RECDATE;

qryCombo:

SELECT qryMin.*, qryMax.*
FROM qryMin
INNER JOIN qryMax 
        ON qryMin.SubjectNumber = qryMax.SubjectNumber
WHERE qryMin.RECDATE = qryMax.RECDATE 
      AND qryMin.FoodType = 1 
      AND qryMax.FoodType = 3;
4

0 に答える 0