sql - T-SQL 条件“WHERE”子句和“IN”子句包含结果集中的所有键
问题描述
我有两个表:Tag
和History
,其中Tag
Table 存储有关所有 的信息,TagName
而History
Table 存储从逆变器接收到的实时数据。
现在,我有 14 个不同的站点,可以从中获取逆变器的实时日期,如下所示。
SELECT DISTINCT TagName
FROM History
WHERE TagName LIKE '%DailykWh'
我正在使用相同的查询通过将它们与 TagName 分组来查找SUM()
列Value
的
SELECT
TagName,
SUM (Value) Monthly
FROM
History h1
WHERE
TagName IN (
SELECT DISTINCT
h2.TagName
FROM
History h2
WHERE
h2.TagName LIKE '%DailykWh'
) AND
DateTime BETWEEN '2020-11-01 00:00:00' AND '2020-11-08 23:59:59'
GROUP BY
TagName
ORDER BY
TagName
但结果仅包括第一个 TagName 而不是所有 TagName,如下所示。
如果我对子查询中的所有 TagNames 进行硬编码,那么我将获得来自所有站点的结果。我不想对它们进行硬编码,有没有其他方法可以将所有站点包含在查询结果中?
我是 T-SQL 的新手,我认为可能还有其他东西可以代替IN
子句,但我不知道是哪一个。任何帮助将不胜感激,谢谢!
解决方案
您可以尝试使用加入
SELECT
t.TagName,
SUM (Value) Monthly
FROM
Tag t left join History h on h.tagname=t.tagname
WHERE t.TagName LIKE '%DailykWh'
group by
t.TagName
ORDER BY
t.TagName
推荐阅读
- vue.js - 在 v-col vuetify 中动态更改 cols
- python - pip ImportError:无法导入名称 NullHandler
- javascript - 旋转老虎机在第一次旋转后是不可预测的
- kendo-ui - 如何在剑道网格中获取选定行的索引
- android - 如何在Constraint Layout中实现如下动态宽度的布局?
- java - Java 8 结果链接
- java - 如何校准 bno055 陀螺仪传感器?
- python - 使用 cx_freeze 后缺少文件,exe 在 Anaconda 提示符下运行,但不在 cmd 中
- c# - 在 Arcus 库中,单个 IP 地址如何创建子网对象?
- azure-devops - azdo 管道步骤 - 如何在进一步的任务中使用 CreateStack 云形成模板输出