我希望有人能帮我解决这个问题。
下面是我的表格和代码(因为一件事有点错误..),让我一个一个部分来进一步解释我的情况..
假设我有一张 Pandimandata2002.dbo.tblCrew 的表:
CaseNo DatePIConsult cgoInceptionDate
------ ------------- ----------------
TR12-A 12/03/2012 10/11/2012
TR13-S 11/15/2012 09/15/2012
PO09-B 08/20/2012
SX58-Q 11/22/2012 11/01/2012
BR88-W 10/05/2012 11/05/2012
我有 PostMeds.dbo.tblpms 的这些数据:
CaseNo med_stat med_stateff
------ -------- -----------
BR88-W FIT 12/01/2012
TR12-A UNDERTX 03/13/2013
TR13-S UNDERTX 03/10/2013
PO09-B UNDERTX 01/25/2013
TR13-S FIT 04/01/2013
BR88-W UNDERTX 11/17/2012
从那里,我想要这个:
CaseNo DIFF2
------ -----
BR88-W 57
TR12-A 122
PO09-B 227
TR13-S 137
SX58-Q 133
DIFF2 是两个日期的差值(例如,DATE1-DATE2)。
如果 PostMeds.dbo.tblpms 中不存在 CaseNo,则 DATE1 等于 DATE NOW (4/4/2013)
DATE1 等于特定 CaseNo 的(med_stateff 的最大值,其中 med_stat 类似于 '%FIT%')
或 ELSEIF max(med_stateff) 为空或行不存在,DATE1 也将等于 DATE NOW (4/4/2013)
如果 DatePIConsult 为 NULL,则 DATE2 等于 cgoInceptionDate
ELSE DATE2 等于 DatePIConsult
以下是我当前的查询:
SELECT
t1.CaseNo,
(SELECT
CASE WHEN MAX(cast(o.med_stateff as datetime)) IS NULL THEN DATEDIFF(DAY,
CASE WHEN t1.DatePIConsult IS NULL THEN t1.cgoInceptionDate
ELSE t1.DatePIConsult END, GETDATE())
WHEN ----(select o.med_stat --------)
DATEDIFF(DAY,
CASE WHEN t1.DatePIConsult IS NULL THEN t1.cgoInceptionDate
ELSE t1.DatePIConsult END,
MAX(cast(o.med_stateff as datetime))) END AS DIFF2
FROM PostMeds.dbo.tblpms o
WHERE t1.CaseNo COLLATE DATABASE_DEFAULT = o.CaseNo COLLATE DATABASE_DEFAULT) AS DIFF2
FROM Pandimandata2002.dbo.tblCrew t1
我的代码的错误部分在 DIFF2 的条件下 ..
在那里,我想添加条件以获取 med_stat 的值,其中 med_stateff 的值(w/c 与 med_stat 对齐)是最大值,其中(或考虑)CaseNo 等于我的特定 SUBPRIMARYKEY。获得该值后,我必须检查该值是否等于某个单词('FIT'),然后我可以对我的代码进行必要的调整。
我真的希望有人能帮我解决这个问题..提前感谢你们..