SQL查询获得多个where子句别名



希望您能帮助解决这个问题。

我在一个系统上运行了一个能源管理软件。记录的数据是总值,记录在列value中。每小时做一次。还有其他一些数据,这里有一个布尔值Active和一个整数Day

我想要的是一个查询,它为我提供了一个排序日期的列表,一天的总用电量和一天的峰值用电量。

通过使用Active存在的值的Max/Min来计算峰值功率使用量。但是,有时Active位没有设置,并且该查询单独的结果将产生NULL。

这是我的查询:

SELECT 
    A.Day, A.Forbrug, B.Peak
FROM 
    (SELECT 
         Day, Max(Value) - Min(Value) AS Forbrug
     FROM 
         EL_HT1_K 
     WHERE 
         MONTH = 8 AND YEAR = 2016
     GROUP By Day) A, 
    (SELECT 
         Day, Max(Value) - Min(Value) AS Peak
     FROM 
         EL_HT1_K 
     WHERE 
         Month = 8 AND Year = 2016 AND Active = 1
     GROUP BY Day) B
WHERE 
    A.Day = B.Day

只返回查询B (Peak-usage)会产生的结果。我想要的是,内部查询A的其余结果仍然显示,即使查询B在当天产生0/null。

这是可能的吗?

供参考。我需要这是在一个查询的原因,是scada系统有一些困难处理多个查询。

我想你只是想要条件聚合。根据你的描述,这似乎是你想要的查询:

SELECT Day, SUM(Value) as total,
       MAX(CASE WHEN Active = 1 THEN Value END) as Peak,
FROM EL_HT1_K
WHERE Month = 8 AND  Year = 2016 
GROUP BY Day;

最新更新