2016-12-07 7 views
0

私は、日付を計算する最良の方法を分単位で求めようとしています。私は登録プロセス(ステージ8とステージ10)の2つのステージの間に経過時間を決定しようとしていますが、これはステージ10に入ったことのある人にのみ必要です。2つのテーブルがあります。以下からケースで結合テーブルにDatediff()を使用

Incorrect syntax near the keyword 'CASE'.

:登録ID番号(RID)

は、私は次のエラーを取得します。

Select datediff(Minute,startdate,enddate) 
from Registration r with(nolock) 
inner join registrationstagehistory rh with(nolock) on r.rid=rh.rhrid 

それはこのようなものになることがあります。あなたはあなたのCASE文のいずれかにEND(それが表示されますが、私はコンテキストからI確認することはできません内側の1が欠けている

CASE WHEN R.RsID=10 THEN 
     CASE rh.rhrsid 
      WHEN 8 then 'startdate' 
      WHEN 10 THEN 'enddate' 
     ELSE NULL 
    END 
END 
+0

あなたがテーブルのスキーマを追加することができますか? – McNets

+0

投稿したコードの外側の 'CASE'に' end'がありません。 –

+0

ステージ10の登録のみのdiffdate(ステージ8、ステージ10)が必要ですか?それ以上のフィールドはありませんか? – McNets

答えて

0

)持っている:

CASE WHEN R.RsID=10 THEN 
    CASE rh.rhrsid 
     WHEN 8 then 'startdate' 
     WHEN 10 THEN 'enddate' 
     ELSE NULL 
    END 
END 
0

ここでそれを確認してください:http://rextester.com/BHBZ30100

を、私はこの答えのために、このスキーマを使用しました:

create table #reg (id int, other text); 
create table #his (reg_id int, rs_id int, rdate datetime); 
insert into #reg values (1, 'registration 1'), (2, 'registration 2'); 
insert into #his values (1, 1, '2016-11-01') 
         ,(1, 5, '2016-11-05') 
         ,(1, 8, '2016-11-08') 
         ,(1, 9, '2016-11-09') 
         ,(1,10, '2016-11-10') 
         ,(2, 1, '2016-11-01') 
         ,(2, 5, '2016-11-05'); 

あなただけのステージ10に到達した登録レコードのRegistrationHistoryテーブルにdatediffをしたい場合は、直接Stage=10レコードをフィルタリングすることができます。次に、別のクエリを使用してステージ8の日付を検索し、その差異を見つけます。

select 
    #reg.*, #his.*, 
    datediff(minute 
       ,isnull((select h2.rdate 
        from #his h2 
        where h2.rs_id = 8 and h2.reg_id = #his.reg_id), #his.rdate) 
       ,#his.rdate) as minutes   
from #his 
    inner join #reg on #his.reg_id = #reg.id 
where 
    #his.rs_id = 10 

そして、これが結果です:(私はあなたが必要とする内容を正確に把握していないため、すべてのフィールドを、追加しました)、

+----+----+----------------+--------+-------+---------------------+---------+ 
| | id | other   | reg_id | rs_id | rdate    | minutes | 
+----+----+----------------+--------+-------+---------------------+---------+ 
| 1 | 1 | registration 1 | 1  | 10 | 10.11.2016 00:00:00 | 2880 | 
+----+----+----------------+--------+-------+---------------------+---------+ 
関連する問題