0

次の古い列と新しく派生した列を含む新しいテーブルを作成するために、TSQLを正しく記述しようとしています。

日付、10分時間、コード、価格、SumItems。

新しいテーブルには、2つの派生列が含まれている必要があります。10minTimeは10分の期間(例:10:40、10:30、10:20)のみで構成され、SumItemsは各10分の期間内のアイテムの合計で構成されます。他の列は変更しないでください。

元のデータは次のようなものです。

    Date        Time       Code Price   Items
    2012-05-10  10:43:00    a   1351.9  2
    2012-05-10  10:42:00    a   1351.7  5
    2012-05-10  10:41:00    a   1351.3  5
    2012-05-10  10:40:00    a   1351.5  8
    2012-05-10  10:39:00    a   1351.8  3
    2012-05-10  10:38:00    a   1351.9  5
    2012-05-10  10:37:00    a   1351.5  6
    2012-05-10  10:35:00    a   1352.2  2
    2012-05-10  10:34:00    a   1352.0  3
    2012-05-10  10:32:00    a   1352.3  6

これは私がこれまでに持っているものですが、エラーがあります。[Price]を削除すると、実行されますが、間違った結果が生成されます。

SELECT TOP 1000 [date]
      ,min([time]) as 10minTime
      ,[price]
      ,sum([Items]) as SumItems
  FROM [MarketData].[dbo].[MyData]
  group by [Date],DATEPART(hour, [Time]),(DATEPART(minute, [Time]))%10
  order by [date] desc, 10minTime desc

アドバイス/助けてくれてありがとう!

4

1 に答える 1

1
SELECT TOP 1000 
     m1.date
      ,min(m1.time) as 10minTime
      ,(Select price from dbo.MyData m2
        where m2.Date = m1.Date
        and DATEPART(hour, m2.Time) = DATEPART(hours, m1.Time)
        and DATEPART(minute, m2.Time) = DATEPART(minute, m2.Time) %10)

      ,sum(Items) as SumItems
  FROM dbo.MyData m1
  group by [Date],DATEPART(hour, [Time]),(DATEPART(minute, Time))%10
  order by [date] desc, 10minTime desc
于 2012-06-29T16:54:49.117 に答える