我在SQL中有以下数据

需要sql队列:
我有10个标签,它每隔10秒连续登录到SQl。现在,我想要创建报告,like.....User将在此基础上提供时间间隔和标签名,它将在Excel中从表和显示中选择数据,假设我的输入是: interval is 2016-09-21 14.00.00 to 2016-09-21 22.00.00标记名称是:system\,我希望输出如下:

假设当时记录不存在,那么我需要空白/零值。,我想在VB6中创建它。
发布于 2016-09-21 19:57:19
需要使用SQL语句从所需记录中选择所需字段。您说过只选择偶数分钟,所以SQL如下所示
SELECT
fields
FROM table
WHERE
(DateAndTime BETWEEN '2016-09-21 14:00' AND '2016-09-21 22:00')
AND
(DATEPART(MINUTE, DateAndTime) % 60 = 0)如果您甚至需要秒,也只需添加另一个和WHERE子句。
SELECT
fields
FROM table
WHERE
(DateAndTime BETWEEN '2016-09-21 14:00' AND '2016-09-21 22:00')
AND
(DATEPART(MINUTE, DateAndTime) % 60 = 0)
AND
(DATEPART(SECOND, DateAndTime) % 60 = 0)为了回答上一个注释中的问题,我编写了一个可以工作的SQL查询。如果您使用SQL标记发布确切的需求,忽略vb6、vba标记,因为这实际上是所有的SQL,并且与运行它的环境无关,那么您将得到一个更好的答案。这会管用的。我建议将其合并到存储过程中。
这是通过创建一个表变量并用可能返回的时间值填充它来实现的。然后,它将加入要查询的表。当没有可连接的记录时,结果是来自第二个表的空值。
--select records on the hour from 8:00 to 5:00
DECLARE @MinTime datetime = '2016-9-9 09:00' --need to parameterize
DECLARE @MaxTime datetime = '2016-9-10 17:00' --need to parameterize
DECLARE @TempTime datetime = @MinTime
DECLARE @Times TABLE
(
TimeValue datetime
)
WHILE @TempTime <= @MaxTime
BEGIN
INSERT INTO @Times
(
TimeValue
)
VALUES
(
@TempTime
)
SET @TempTime = DATEADD(hour, 1, @TempTime)
END
SELECT
CONVERT(varchar(10), TimeRange.TimeValue, 101) AS [Date]
,CONVERT(varchar(10), TimeRange.TimeValue, 108) AS [Time]
,ISNULL(Tag, 'NA')
,ISNULL(Value, 0)
FROM
@Times TimeRange
LEFT JOIN
table
ON
(CONVERT(datetime, CONVERT(varchar(10), table.DateAndTime, 101) + ' ' + CONVERT(varchar(2), DATEPART(HOUR, table.DateAndTime)) + ':' + CONVERT(varchar(2), DATEPART(MINUTE, table.DateAndTime)) + ':' + CONVERT(varchar(2), DATEPART(SECOND, table.DateAndTime))) = TimeRange.TimeValue)
WHERE
(TimeRange.TimeValue BETWEEN @MinTime AND @MaxTime)https://stackoverflow.com/questions/39624204
复制相似问题