我有一个表,其中有一个时间间隔(24小时)和一个体积(整数),我需要以15分钟的间隔来显示(一天的总时间为96个间隔)。这是一张表格,其中包含我的样品:
CREATE TABLE #temptable ( [INTERVAL] nvarchar(3), [Volume] decimal(16,4) )
INSERT INTO #temptable
VALUES
( N'001', 1.2000 ),
( N'002', 1.2000 ),
( N'003', 1.2000 ),
( N'004', 1.7000 ),
( N'005', 1.9000 ),
( N'006', 1.9000 ),
( N'007', 1.8000 ),
( N'008', 1.9000 ),
( N'009', 2.2000 ),
( N'010', 1.8000 ),
( N'011', 2.0000 ),
( N'012', 1.7000 ),
( N'013', 1.5000 ),
( N'014', 1.5000 ),
( N'015', 1.3000 ),
( N'016', 1.6000 ),
( N'017', 1.7000 ),
( N'018', 2.0000 ),
( N'019', 2.0000 ),
( N'020', 2.2000 ),
( N'021', 2.0000 ),
( N'022', 2.2000 ),
( N'023', 1.9000 ),
( N'024', 1.4000 )
DROP TABLE #temptable
老实说,我不知道从哪里开始,但是在这种情况下,需要使间隔1到4等于当前间隔(1.2000)/ 4(.3)。由于我将间隔细分为15分钟,因此间隔的总数将为96。
我正在寻找起点。谢谢。
答案 0 :(得分:1)
如何使用交叉联接引入15分钟的间隔:
WITH minutes AS (
SELECT 0 AS minute UNION ALL
SELECT 15 UNION ALL
SELECT 30 UNION ALL
SELECT 45
)
SELECT
t.[INTERVAL] + ':' + RIGHT('00' + CAST(m.minute AS VARCHAR(2)), 2) AS time,
t.[Volume] / 4.0 AS [Volume]
FROM #temptable t
CROSS JOIN minutes m
ORDER BY
t.[INTERVAL],
m.minute;