我怎樣才能選擇max(d1_10.dstartdate)
(最新單位轉移日期)爲每xpid
(患者ID)從選擇日期在d1_10
是小於每xpid
的max(d8.start_date)
(最近的一次會議日期) ?
的信息:
表:
d0
病人列表表,含有每xpid
(患者)1行d0.xpid
唯一的病人ID
d8
會話表,包含每個xpid
d8.xpid
病人IDd8.start_date
會議開始日期
d1_10
單位轉移表每節1行,包含每個xpid
d1_10.dstartdate
每轉移1行轉讓日期
問題:
目前,我有一個查詢,列出xpid
,max(d8.start_date)
和max(d1_10.startdate)
。但是,max(d1_10.startdate)
不一定小於max(d8.start_date)
我們的目標是讓所有的患者,他們最新的會議日期的列表,而且還在之前的會議日期他們最新的轉會日期。目前轉移日期與會話日期無關。
我試過嵌套連接查詢,但一直未能弄清楚調用變量的範圍。
進展:
這是最接近運行的代碼,我有:
select distinct
d0.xpid,
sessions.max_date,
units.max_unit
from d0
left join
(
select xpid, max(start_date) as max_date
from d8
group by xpid
) as sessions on sessions.xpid = d0.xpid
left join
(
select xpid, max(d1_10.dstartdate) as max_unit
from d1_10
group by xpid
) as units on units.xpid = d0.xpid
段從輸出:
注意null
值,這些都是很好的,我們想要這些。我們希望d0
中的每位患者都有一行輸出,不管他們在d8
或d1_10
中的行如何。
在此先感謝,請讓我知道,如果我可以提供更多的清晰度。
附加信息:
嘗試添加
and units.max_unit <= sessions.max_date
通過Sebastian的建議。這很接近,但不是由max_unit <= max_date
限制,我們需要所有d1_10.dstartdate <= sessions.max_date
之前採取最大。我們希望它限制它從採取最大值之前挑選的泳池units.max_unit
。@Sebastian,假設
xpid = 2500
具有d1_10
3行與d1_10.dstartdate in ('01-jan-2017', '01-feb-2017', '01-mar-2017')
和max(d8.start_date) = '10-feb-2017'
。與您的建議,
max_unit is null
,因爲max(d1_10.dstartdate) = '01-mar-2017'
,但'01-mar-2017 > '10-feb-2017'
。我們需要限制
d1_10.dstartdate <= max(d8.start_date)
之前採取最大限度。期望值應爲max_unit = '01-feb-2017'
,因爲這是此患者的最大轉診日期,小於此患者的最大會話日期。讓我知道如果我能更好地清理它。
請添加樣本數據集 – SriniV
添加'和d1_10.max_unit
@ realspirituals這樣做的首選方法? Excel表單中的.rar文件? – Jackson