Sql 用于实时数据库查询的每个完整月份的减法
我有一个问题,有点不同 关于这些SQL:Sql 用于实时数据库查询的每个完整月份的减法,sql,sql-server,partition,Sql,Sql Server,Partition,我有一个问题,有点不同 关于这些SQL: ;WITH cte AS ( SELECT DISTINCT Annees = YEAR(DateTime), Mois = MONTH(DateTime), firstRecord = first_value(value) OVER (PARTITION BY YEAR(DateTime), MONTH(DateTime) ORDER BY DateTime ASC), lastR
;WITH cte AS
(
SELECT DISTINCT
Annees = YEAR(DateTime),
Mois = MONTH(DateTime),
firstRecord = first_value(value) OVER (PARTITION BY YEAR(DateTime), MONTH(DateTime) ORDER BY DateTime ASC),
lastRecord = first_value(value) OVER (PARTITION BY YEAR(DateTime), MONTH(DateTime) ORDER BY DateTime DESC)
FROM
AnalogHistory
WHERE
TagName = 'A_000000000000000000000000000058.PV_Kw'
AND DateTime >= '01/01/2016 00:00:00'
AND DateTime <= '24/07/2017 13:53:31'
)
SELECT
Annees, Mois,
value = isnull(lastRecord, 0) - isnull(firstRecord, 0)
FROM
cte
SELECT
YEAR(DateTime) AS Annee, MONTH(DateTime) AS Mois,
MIN(Value) As MinVal, MAX(Value) As MaxVal,
MAX(Value) - MIN(Value) As Difference
FROM
AnalogHistory
WHERE
TagName = 'A_000000000000000000000000000058.PV_Kw' AND
DateTime >= '01/01/2016 00:00:00' AND
DateTime <= '24/07/2017 13:53:31'
GROUP BY
YEAR(DateTime), MONTH(DateTime)
ORDER BY
YEAR(DateTime), MONTH(DateTime)
这是有问题的,因为2017-04-06 01:57:47.4740000的值可能与2017-04-01 00:00:00.0000000的值不同,并且输出结果为假
所以基本上,我需要接受相同的查询,但是在一个月的第一个时刻和最后一个时刻应用它
有什么想法吗
编辑
我必须为每个月选择第一个时刻和最后一个时刻,有了这些,我需要查询我的数据库以获得相应的值并减去它
因此,我想要的是获得以下价值:
2017-03-01 00:00:00.0000000 | 12
2017-03-31 23:59:59.9999999 | 24
2017-04-01 00:00:00.0000000 | 24
2017-04-30 23:59:59.9999999 | 78
...
而不是:
2017-03-31 07:39:04.1310000 | 23
2017-04-06 01:57:47.4740000 | 38
2017-04-11 20:16:30.8180000 | 42
...
historian数据库也可以检索me值,因此不必担心每月第一个和最后一个时刻的数据
使用这些值,我需要减去它并检索它,因此这可能是:
Year | Month | Value
2017 | 03 | 12
2017 | 04 | 54
...
这很难解释清楚,但是我试图查询的数据库使用SQL作为接口来读取数据。事实上,真实的数据库是以时间为基础的,所以我会将每个对象的值存储在其中,他会得到值。所以我可以随时查询,数据库将能够检索到我的东西
以下是一个输出示例:
我无法检索到关于表设计的任何其他信息。我只知道标记名条件是强制性的。说真的,你可能需要在谷歌上搜索一下,例如“sql server月初”?你已经用
first\u value
来计算第一个/最后一个值了,你还想要什么。@dnoeth,他希望我们写一个查询,返回2012年1月1日的SQL Server和更新版本的函数。我真的不喜欢这种问题。让我们阅读不相关的代码,让我们阅读其他问题,但未能提供相关数据。一个好的sql查询应该包含对问题的清晰解释、ddl+dml的示例数据、期望的结果以及您当前的最佳尝试。除了噪音以外的任何东西。
Year | Month | Value
2017 | 03 | 12
2017 | 04 | 54
...