誰かが私がこれを解決するのを手伝ってくれることを願っています.
以下は私のテーブルとコードです(これは、1つの理由で少し間違っています..)、私の状況をさらに説明するために、部分的に並べてみましょう..
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 は、2 つの日付の差 (DATE1-DATE2 など) です。
PostMeds.dbo.tblpms に CaseNo が存在しない場合、DATE1 は DATE NOW (2013 年 4 月 4 日) と同じです。
DATE1 は、特定の CaseNo の (med_statff の最大値で、med_stat は「%FIT%」のようなものです) に等しい
OR ELSEIF max(med_stateff) が null または行が存在しない場合、DATE1 は DATE NOW (2013 年 4 月 4 日) とも等しくなります。
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_stateff の値 (w/c は med_stat と整列) が最大値である med_stat の値を取得する条件を追加したいと思います (または考慮して) CaseNo は、特定の SUBPRIMARYKEY に等しいです。その値を取得したら、その値が単語 ('FIT') と等しいかどうかを確認する必要があります。その後、コードに必要な調整を行うことができます。
誰かがこれを整理するのを手伝ってくれることを本当に願っています..皆さんに事前に感謝します..