2

SQLで平均日付を取得しようとしていますが、これを行う方法がわかりません。私は次のフィールドを持っています:

ID   Date1             Date2                   Date3
1    05/04/2012        08/09/2012             07/02/2012

ID番号1の平均日付を示す別の列を追加したいと思います。平均番号のみを実行しましたが、平均日付は実行していません。ありがとう

4

2 に答える 2

6

次のようなものを使用できます。これは、日付を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を参照してください

于 2012-12-26T16:14:42.820 に答える
1
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
于 2012-12-26T16:27:02.500 に答える