SQLで平均日付を取得しようとしていますが、これを行う方法がわかりません。私は次のフィールドを持っています:
ID Date1 Date2 Date3
1 05/04/2012 08/09/2012 07/02/2012
ID番号1の平均日付を示す別の列を追加したいと思います。平均番号のみを実行しましたが、平均日付は実行していません。ありがとう
SQLで平均日付を取得しようとしていますが、これを行う方法がわかりません。私は次のフィールドを持っています:
ID Date1 Date2 Date3
1 05/04/2012 08/09/2012 07/02/2012
ID番号1の平均日付を示す別の列を追加したいと思います。平均番号のみを実行しましたが、平均日付は実行していません。ありがとう
次のようなものを使用できます。これは、日付をaにキャストしてからfloat
、平均を取ります。
select t.id, t.date1, t.date2, t.date3, src.AvgDate
from yourtable t
inner join
(
select id, cast(avg(date) as datetime) AvgDate
from
(
select id, cast(cast(date1 as datetime) as float) date
from yourtable
union all
select id, cast(cast(date2 as datetime) as float) date
from yourtable
union all
select id, cast(cast(date3 as datetime) as float) date
from yourtable
) x
group by id
) src
on t.id = src.id;
SQL FiddlewithDemoを参照してください
日付の値は複数の列にまたがっているため、unpivot
またはを実行union all
して最初に1つの列の値を取得してから、その値の平均を取ります。
UNPIVOT
関数を使用する別の例を次に示します。
select t.id, t.date1, t.date2, t.date3, src.AvgDate
from yourtable t
inner join
(
select id, cast(avg(date) as datetime) AvgDate
from
(
select id, cast(cast(date as datetime) as float) date
from yourtable
unpivot
(
date
for col in (date1, date2, date3)
) unpiv
) x
group by id
) src
on t.id = src.id;
SQL FiddlewithDemoを参照してください
select id, date1, date2, date3
,Cast(
(cast(date1 as Float) + cast(date2 as Float) + cast(date3 as Float))/3
as Datetime) as AvgDate
from yourtable