sql-server - 在 SQL VIEW 中创建条件列
问题描述
我正在从 MSSQL 中的另一个视图创建一个视图。原始视图包含每天装满的容器及其总重量的信息,每一行都有一个 Operator_name,表明谁在这个容器上工作。就像是
Operator_name total_containers Total_weight 日期
乔 ..................... 10 .................. 1000 ...... . 05/01/2020
乔 ..................... 25 .................. 2500 ...... . 2020 年 5 月 2 日
卡尔 .................... 20 .................. 2000........ . 05/01/2020
卡尔 ...................... 30 ........ 3000 ...... 2020 年 5 月 2 日
我的新视图为给定的操作员显示了他随时间填充的容器总数和重量,以及这些值的日平均值,我还想添加一个显示容器和重量平均值的列,但仅用于上个月。我目前有这个代码
SELECT operator_name
,SUM(total_container) AS containers
,SUM(total_weight) AS weight
,AVG(total_container) AS avg_container
,AVG(total_weight) AS avg_weight
,AVG(weight)
WHERE MONTH(date_time) = MONTH(MAX(date_time)) AS last_weight
FROM dbo.V_TDD_BATCH
GROUP BY operator_name
在 Select 子句中,我想添加类似 AVG(total_weight) WHERE MONTH(date_time) = MONTH(MAX(date_time) as last_month_Average/ 但这种语法当然是错误的。
有谁知道我怎样才能创建这样的列?提前致谢
解决方案
试试下面的查询。
WITH lastMonth
AS (
SELECT operator_name
,AVG(total_weight) last_month_Average
FROM dbo.V_TDD_BATCH
GROUP BY operator_name
HAVING MONTH(date_time) = MONTH(MAX(date_time))
)
SELECT operator_name
,SUM(total_container) AS containers
,SUM(total_weight) AS weight
,AVG(total_container) AS avg_container
,AVG(total_weight) AS avg_weight
,AVG(weight)
,(
SELECT TOP 1 last_month_Average
FROM lastMonth
WHERE operator_name = b.operator_name
) AS [last_month_Average]
FROM dbo.V_TDD_BATCH b
GROUP BY b.operator_name
推荐阅读
- reactjs - 如何使用 i18n 在 React 中翻译 moment.js
- python - 多个列表理解与单个 for 循环
- python - 在给定父对象键的情况下在字典中添加或删除元素而不考虑架构
- sql-server - 在 SSIS 中加载 XLSX/XLSB 格式的 excel
- mongodb - 我需要在我的 GKE 集群上配置哪些 IP/CIDR 范围,以便我的 VPC 可以与 Mongo Atlas 通信
- spring - 日志文件未在 Jboss EAP 7.2 上为 2 个 Java Spring WAR 文件设置的不同路径中生成
- angular - 带有 Ngrx 数据服务错误的角解析器
- sql-server - SQL server:根据外键约束删除相应表中的行和所有行
- android-studio - 片段内的 RecyclerView 给出错误
- javascript - 在反应中设置本地日期时间的动态值