n時間で単純なグループ化が可能ですか? 数分、関連する質問が見つかりましたが、何時間もかかりません。T-SQLグループn時間
いくつかのデータをオフセットして8時間分グループ化する必要があります。
したがって、最初の8時間は00:00 - 08:00ではなく、22:00(昨日) - 06:00(今日)です。
これを1時間ごとにグループ化して貼り付けました。 どうすればいいですか? アドバイスありがとうございます。
n時間で単純なグループ化が可能ですか? 数分、関連する質問が見つかりましたが、何時間もかかりません。T-SQLグループn時間
いくつかのデータをオフセットして8時間分グループ化する必要があります。
したがって、最初の8時間は00:00 - 08:00ではなく、22:00(昨日) - 06:00(今日)です。
これを1時間ごとにグループ化して貼り付けました。 どうすればいいですか? アドバイスありがとうございます。
DATEADD/DATEDIFFトリックを使用して、8時間間隔でグループ化することができます。
あなたは、この場合に
六時にスクリプト例
DECLARE @foo table (foo smalldatetime, bar int);
INSERT @foo (foo, bar)
VALUES
('2017-10-11 21:00', 1),
('2017-10-11 22:00', 2),
('2017-10-11 23:00', 3),
('2017-10-12 01:00', 4),
('2017-10-12 03:00', 5),
('2017-10-12 05:00', 6),
('2017-10-12 07:00', 7),
('2017-10-12 08:00', 8);
SELECT
SUM(bar),
DATEADD(hh, ((DATEDIFF(hh, 0, foo)+2)/8*8)-2, 0)
FROM
@foo
GROUP BY
DATEADD(hh, ((DATEDIFF(hh, 0, foo)+2)/8*8)-2, 0);
私は(あなたが提供しなければならない)どちらもデータの入力や出力を知らないが、ここではいくつかの一般的な方法です。
単純なテーブル(SimpleTable
)2列を持つ:販売販売製品と数量の時間:今
SELECT SellingTime, Qunatity,
CASE WHEN DATEPART(hh, SellingTime) >= 22 AND DATEPART(hh, SellingTime) < 6 THEN 1
WHEN DATEPART(hh, SellingTime) >= 6 AND DATEPART(hh, SellingTime) < 14 THEN 2
ELSE 3 END AS NumberOfOrder
FROM SimpleTable
22-6などの間の時間のために1:今すぐ
SellingTime | Quantity
2013-01-02 08:43:22.011 | 4
2013-02-12 12:32:12.001 | 14
etc.
は、我々は日付ごとに番号を発注追加されます、あなたがする必要があるすべては和Quantity
によってグループにある:
*
の代わりに、あなたが最初のクエリを入れて
SELECT NumberOfOrder, SUM(Quantity) FROM (*)
。
ありがとうございました – Bogu