ビットをオン/オフに設定した時間の要約を取得するクエリを作成する必要があります。TSQL - 条件付きの時間列の合計
例:
╔═══════════════════════════╗
║ TABLE ║
╠════╦════════╦═════╦═══════╣
║ ID ║ TIME ║ BIT ║ VALUE ║
╠════╬════════╬═════╬═══════╣
║ 1 ║ 13:40 ║ 1 ║ 5 ║
║ 2 ║ 13:45 ║ 1 ║ 3 ║
║ 3 ║ 13:50 ║ 1 ║ 1 ║
║ 4 ║ 13:55 ║ 0 ║ 2 ║
║ 5 ║ 14:00 ║ 0 ║ 7 ║
║ 6 ║ 14:05 ║ 1 ║ 3 ║
║ 7 ║ 14:10 ║ 1 ║ 4 ║
║ 8 ║ 14:15 ║ 0 ║ 2 ║
║ 9 ║ 14:20 ║ 1 ║ 2 ║
╚════╩════════╩═════╩═══════╝
私は総TIME
の概要(とVALUE
- 1シンプルな)を持っていると思いBIT
がSET ON
たとき:
13:40 - 13:50 = 10 mins
14:05 - 14:10 = 5 mins
14:20 = no end time, 0 mins
-----------------------------------------
15 mins
が見つけました:
-
を
- How to sum up time field in SQL Server =一種の良い質問、しかし、この場合
- Aggregate function over a given time intervalでは動作しません開始と静的時間(午後十二時00分00秒)がある=が集合体であるが、エアコンではないと私は、これは可能性があると考え、すべてのデータ
上で動作します処理された最後の日付を渡す再帰関数(最後に処理されたdatetimeを渡す)として実行し、BIT
がON
であるためdatetimeを合計します。 VALUE(簡単なもの)加算する
SQLクエリ:BIT
あった時に
SELECT SUM(Value)
FROM Table
WHERE Bit = 1
がどのように私は分(時間)の合計値を取得する必要がありますが、ON
を設定しますか?
EDIT:テストのために使用することができますクエリ:
DECLARE @Table TABLE(
ID INT Identity(1,1) PRIMARY KEY,
[TIME] DATETIME NOT NULL,
[BIT] BIT NOT NULL,
[VALUE] INT NOT NULL
);
INSERT INTO @Table([TIME],[BIT],[VALUE]) VALUES('13:40',1,5);
INSERT INTO @Table([TIME],[BIT],[VALUE]) VALUES('13:45',1,3);
INSERT INTO @Table([TIME],[BIT],[VALUE]) VALUES('13:50',1,1);
INSERT INTO @Table([TIME],[BIT],[VALUE]) VALUES('13:55',0,2);
INSERT INTO @Table([TIME],[BIT],[VALUE]) VALUES('14:00',0,7);
INSERT INTO @Table([TIME],[BIT],[VALUE]) VALUES('14:05',1,3);
INSERT INTO @Table([TIME],[BIT],[VALUE]) VALUES('14:10',1,4);
INSERT INTO @Table([TIME],[BIT],[VALUE]) VALUES('14:15',0,2);
INSERT INTO @Table([TIME],[BIT],[VALUE]) VALUES('14:20',1,2);
SELECT * FROM @Table;
これは本当に読みやすく、わかりやすいものです。答えをありがとう! – Tatranskymedved
update:(BY [id])ではなく、OVER(ORDER BY [時間])を使用します。 Idはシーケンシャルである必要はないからです。それはguidまたはnatural keyかもしれません – usart