1

2つのテーブル(data2002.dbo。tblCreweds.dbo。tblpms があり、メインテーブルとしてtblCrewが使用されています。tblpmsの主キーはすべてtblCrew(メイン)に存在することに注意してください。tblCrewからのデータがtblpmsに存在するかどうかを確認したいのですが、存在する場合は、tblCrewからの特定の日付とtblpmsからの別の日付の差を取得する必要があります。しかし、それが存在しない場合は、tblCrewからの日付と今日の日付の違いが必要です。

私はここで私の質問で立ち往生しています:

SELECT t1.CaseNo, t1.LastName + ', ' + t1.FirstName as fname
, case 
    when (t2.med_stat <> 'Fit To Work' and t2.med_stat <> 'Deceased' 
      and t2.med_stat <> 'Reached Maximum Medical Cure' 
      and t2.med_stat <> 'Stop Treatment') 
          then datediff(day,cast(t1.DatePIConsult as datetime), getdate()) 
    else
      datediff(day,cast(t1.DatePIConsult as datetime),cast(t2.med_stateff as datetime))        end as
TreatmentDays 

from data2002.dbo.tblCrew as t1
 join eds.dbo.tblpms as t2 
   on t1.CaseNo COLLATE DATABASE_DEFAULT = t2.CaseNo COLLATE DATABASE_DEFAULT

これは私にこの結果をもたらします(これは私が期待したものではありません):

CaseNo          Name                    Days
AM06-009-CRW    VILLARINO, RICHARD  
BLB13-014-CRW   ARQUISOLA, REDEN    
JPI12-028-CRW   OBENQUE, JOSE   
JPI12-037-CRW   TARRO, ANGELO   
JPI12-039-CRW   DELA CRUZ, FELICIANO    121
NOE12-205-CRW   CLAVIO, RAYMUND 
NOE12-205-CRW   CLAVIO, RAYMUND 

私はこれのようにもっと期待していました(サンプル):

CaseNo          Name                    Days
BM07-029-CRW    ASASPOK, RICH           119
CLC14-014-CRW   QDASF, READS            115

私が(@ _ @を期待して)達成したいことは、以下に指定されています):

a。表1に20行、表2に10行ある場合。table2からではなく(table1に基づいて)20行で結果を取得できますか(table1には常にtable2よりも多くのデータがあるため)。

b。また、クエリを追加して、個別のCaseNoと、3番目の列がnullでない場合のみを表示したいと思います。

c。もう1つの基準は、3番目の列の値が109〜121(実際の値= 110〜120)の場合のみです。

あなたがこれで私を助けることができることを願っています..事前にどうもありがとう

4

1 に答える 1

0

 SELECT t1.CaseNo, t1.LastName + ', ' + t1.FirstName as fname
, case 
    when t2.CaseNo IS NULL 
        THEN datediff(day,cast(t1.DatePIConsult as datetime), getdate()) 
    when t2.med_stat NOT IN ('Fit To Work',
                             'Deceased',
                             'Reached Maximum Medical Cure',
                             'Stop Treatment') 
          then datediff(day,cast(t1.DatePIConsult as datetime), getdate()) 
    else
      datediff(day,cast(t1.DatePIConsult as datetime),cast(t2.med_stateff as datetime))
end as TreatmentDays from data2002.dbo.tblCrew as t1 left join eds.dbo.tblpms as t2 on t1.CaseNo COLLATE DATABASE_DEFAULT = t2.CaseNo COLLATE DATABASE_DEFAULT

于 2013-03-08T17:49:22.180 に答える