2016-10-31 33 views
-1

いくつかの行を1つの行に結合しようとしています。開始時間と終了時間を1つの開始時間と終了時間に分割する

私の現在のクエリは、以下の機能を提供します。

ID Name Dept Hours Date   Start_time   End_time 
--- ---- ---- ----- ----   -----------   ---------- 
1 John 01-A 4:45 10-18-2016 10-18-2016 06:00:00 10-18-2016 10:45:00 
1 John 01-A 3:15 10-18-2016 10-18-2016 11:15:00 10-18-2016 14:30:00 

私はこの結果を表示するためにselect文を必要とする:

ID Name Dept Hours Date   Start_time   End_time 
--- ---- ---- ----- ----   -----------   ---------- 
1 John 01-A 8:50 10-18-2016 10-18-2016 06:00:00 10-18-2016 14:30:00 
+0

これは、時間を除いてかなり基本的なMIN、MAXタイプの集計です。あなたは8時50分にどう思いますか?それは私がこれをどのように見ても関係しません。 –

答えて

1

まあ、これはあなたがデータ等により何を意味するかであると仮定。

Select ID, Name, DEPT, SUM(HOURS), DATE, MIN(START_TIME),MAX(END_TIME) 
from table 
group by ID, Name, DEPT, DATE 
+0

残念ながら 'sum()'は 'time'値に対しては機能しません。 –

+0

その働き!..私はなぜグループの開始時間と終了時間であったのか分からず、それが原因で問題が発生しました。 – Veebster

0

おそらく、問題は一緒に時間を追加している(私はhourstimeであると仮定しています)。 1つの方法は次のとおりです。

select id, name, dept, 
     cast(dateadd(minute, 0, sum(datediff(minute, 0, hours))) as time) as hours, 
     date, 
     min(start_time) as start_time, 
     max(end_time) as end_time 
from t 
group by id, name, dept, date; 

これは出力として時間をフォーマットします。あなたは好きなフォーマットにそれを再フォーマットすることができます。

+0

時間欄には開始時間から終了時間までの時間数が表示されます。私は上記の方法を試したが、それは結果をもたらさない – Veebster

+0

@Veebster。 。 。私はそれがうまくいくような私には見えない答えをあなたが受け入れることが好奇妙だと分かっています。 –

+0

私が私の例で示した時間は、すでに数時間で働いていて、varcharとして表示されるため、合計が機能します。私はその私のせいで時間列はvarcharであると言わなければならないと思う。私の間違いの謝罪 – Veebster

関連する問題