Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 包含大约20条CASE语句的SQL代码行。这很难理解,而且容易出错。您的代码大大简化了一切。此外,使用SQL查询返回更易于统计分析的数据。我可以查看一周中每小时和每一天的总小时数。该输出可以进行统计分析,并进行可视化。谢谢你帮助我 CREATE TABLE_Sql Server_Python 3.x_Temporal - Fatal编程技术网

Sql server 包含大约20条CASE语句的SQL代码行。这很难理解,而且容易出错。您的代码大大简化了一切。此外,使用SQL查询返回更易于统计分析的数据。我可以查看一周中每小时和每一天的总小时数。该输出可以进行统计分析,并进行可视化。谢谢你帮助我 CREATE TABLE

Sql server 包含大约20条CASE语句的SQL代码行。这很难理解,而且容易出错。您的代码大大简化了一切。此外,使用SQL查询返回更易于统计分析的数据。我可以查看一周中每小时和每一天的总小时数。该输出可以进行统计分析,并进行可视化。谢谢你帮助我 CREATE TABLE,sql-server,python-3.x,temporal,Sql Server,Python 3.x,Temporal,包含大约20条CASE语句的SQL代码行。这很难理解,而且容易出错。您的代码大大简化了一切。此外,使用SQL查询返回更易于统计分析的数据。我可以查看一周中每小时和每一天的总小时数。该输出可以进行统计分析,并进行可视化。谢谢你帮助我 CREATE TABLE tempFireEvents ( EventID VARCHAR(8) NOT NULL, StartDateTime DATETIME NOT NULL, EndDateTime DATETIME NOT NULL ) INSERT IN

包含大约20条CASE语句的SQL代码行。这很难理解,而且容易出错。您的代码大大简化了一切。此外,使用SQL查询返回更易于统计分析的数据。我可以查看一周中每小时和每一天的总小时数。该输出可以进行统计分析,并进行可视化。谢谢你帮助我
CREATE TABLE tempFireEvents
(
EventID VARCHAR(8) NOT NULL,
StartDateTime DATETIME NOT NULL,
EndDateTime DATETIME NOT NULL
)

INSERT INTO tempFireEvents
VALUES
('fire0001', 'november 1, 2018 10:45:00', 'november 2, 2018 11:30:00'),
('fire0002', 'november 1, 2018 11:50:00', 'november 1, 2018 13:10:00'),
('fire0003', 'november 1, 2018 13:20:00', 'november 1, 2018 14:20:00'),
('fire0004', 'november 1, 2018 15:25:00', 'november 1, 2018 16:05:00'),
('fire0005', 'november 1, 2018 16:20:00', 'november 2, 2018 17:00:00'),
('fire0006', 'november 1, 2018 16:20:00', 'november 1, 2018 17:01:00');

select e.*, hr.ld, 
   60 - case when e.startdatetime > hr.ld then datepart(minute, e.startdatetime) else 0 end
   + case when e.enddatetime < hr.ud then datepart(minute, e.enddatetime)-60 else 0 end as allocatedminutes
from tempFireEvents as e
cross apply
(
  select
    dateadd(hour, datepart(hour,e.startdatetime)+t.rn-1, cast(cast(e.startdatetime as date) as datetime)) as ld, 
    dateadd(hour, datepart(hour,e.startdatetime)+t.rn, cast(cast(e.startdatetime as date) as datetime)) as ud,
    rn
  from
  (
    -- a tally, max 100 rows .. max 100 hours duration
    select top (1+datediff(hour,e.startdatetime,dateadd(minute, -1, e.enddatetime))) row_number() over(order by @@spid) as rn
    from (values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) as a(n)
    cross join (values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) as b(n)
  ) as t
) as hr;