0

データセットがあり、日付の差を計算する必要があります。データセットは毎日異なるため、一般的なクエリが必要です。

ここに私のデータセットがあります

**Client Number    :  Status  :    StatusDate**
   123456           Admit       2012-01-18
   123456           Accepted    2012-01-15
   123456           Offered     2012-01-10

   567899           Admit       2012-01-11
   567899           Accepted    2012-01-07
   567899           Offered     2012-01-05

   987342           Admit       2012-01-24
   987342           Accepted    2012-01-24
   987342           Offered     2012-01-21

上記はサンプル データであり、前述のとおり、データは毎日変化します。上記のように、特定のクライアント番号に対して常に 3 つが入力され、常に 3 つのステータスが上記の次の順序で表示されます。

私が必要としているのは、Offered to Accepted と Accepted to Admit の間の日数の違いを計算することです。上記の結果セットは次のようになります。3 つの列

**ClientNumber : Date Diff Betw Offeres & Accepted : Date Diff Betw Accepted & Admited** 
   123456                     5 Days                           3 Days
   567899                     2 Days                           4 Days
   987342                     3 Days                           0 Days

一般的なクエリが必要です。前述のように、各クライアント番号には 3 つのステータスがあります。

前もって感謝します。

4

2 に答える 2

1

自己結合を行う必要があります。一般的な例を次に示します。

select t1.clientnumber, datediff(day, t1.statusdate, t2.statusdate) OfferToAccept
from yourtable t1 join yourtable t2 on t1.clientnumber = t2clientnumber
and t1.status = 'Offered' and t2.status = 'Accepted'

where whatever

おそらく質問でタイプミスしている他の間隔についても同様です。「承認済みと承認済みの日付の違い」と表示されます

于 2013-02-08T02:21:12.020 に答える
0

クエリ:

SQLFIDDLE例

SELECT t1.[Client Number],
       MAX(datediff(DAY, t1.statusdate, t2.statusdate)) [Offeres & Accepted],
       MAX(datediff(DAY, t3.statusdate, t1.statusdate)) [Accepted & Admited]
FROM Table1 t1
LEFT JOIN Table1 t2 ON t1.[Client Number] = t2.[Client Number]
AND t1.status = 'Offered'
AND t2.status = 'Accepted'
LEFT JOIN Table1 t3 ON t1.[Client Number] = t3.[Client Number]
AND t1.status = 'Admit'
AND t3.status = 'Accepted'
GROUP BY t1.[Client Number] 

結果:

| CLIENT NUMBER | OFFERES & ACCEPTED | ACCEPTED & ADMITED |
-----------------------------------------------------------
|        123456 |                  5 |                  3 |
|        567899 |                  2 |                  4 |
|        987342 |                  3 |                  0 |
于 2013-02-08T07:01:33.983 に答える