Sql server 在SQL视图中创建条件列
我正在MSSQL中从另一个视图创建视图。 原始视图包含每天填充的容器及其总重量的信息,每一行都有一个操作员名称,指示谁在该容器上工作。差不多 操作员姓名总集装箱总重量日期 乔。。。。。。。。。。。。。。。。。。。。10 .................. 1000 .......... 2020年1月5日 乔。。。。。。。。。。。。。。。。。。。。25 .................. 2500 .......... 2020年2月5日 卡尔。。。。。。。。。。。。。。。。。。。20 .................. 2000........... 2020年1月5日 卡尔。。。。。。。。。。。。。。。。。。。30 ................. 3000 ........... 2020年2月5日 我的新视图显示了给定操作员随时间填充的集装箱总数和重量,以及这些值的日平均值。我还想添加一列,显示上个月集装箱和重量的平均值。我现在有这个代码Sql server 在SQL视图中创建条件列,sql-server,Sql Server,我正在MSSQL中从另一个视图创建视图。 原始视图包含每天填充的容器及其总重量的信息,每一行都有一个操作员名称,指示谁在该容器上工作。差不多 操作员姓名总集装箱总重量日期 乔。。。。。。。。。。。。。。。。。。。。10 .................. 1000 .......... 2020年1月5日 乔。。。。。。。。。。。。。。。。。。。。25 .................. 2500 ....
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子句中,我想添加如下内容
平均值(总重量),其中月份(日期时间)=月份(最大日期时间)为最后一个月的平均值/
当然,这种语法是错误的
有人知道如何创建这样的专栏吗?
提前感谢尝试下面的查询
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
尝试下面的查询
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
WHERE子句应该在表信息之后,您不能在selectWHERE子句应该在表信息之后给出WHERE,您不能在selectWHERE中给出WHERE谢谢您的回答,当我为上个月的平均权重编写代码时,SQL告诉我:无法对包含聚合或子查询的表达式执行聚合函数,这是after我尝试保存视图,很抱歉,尝试另一种方法。@Juangirdo更新了答案,你能检查一下onceThanks的答案吗,当我为上个月的平均权重编写代码时,SQL告诉我:无法对包含聚合或子查询的表达式执行聚合函数,这是在我尝试保存视图之后。很抱歉,尝试另一种方法。@Juangirdo更新了答案,你能检查一下吗