按别名分组的SQL
我有一个smallint列,用于表示时间。我编写了下面的代码,根据时间推导出一个结果:按别名分组的SQL,sql,group-by,sql-server-2016,Sql,Group By,Sql Server 2016,我有一个smallint列,用于表示时间。我编写了下面的代码,根据时间推导出一个结果: CASE WHEN CONVERT(varchar, t0.U_ORC_BE_ProdTime, 108) BETWEEN '07:00:00' AND '19:00:00' THEN '1' ELSE '2' END AS [Shift], --If time is between 7am and 7pm then Shift 1, else Sh
CASE
WHEN
CONVERT(varchar, t0.U_ORC_BE_ProdTime, 108) BETWEEN '07:00:00' AND '19:00:00' THEN '1'
ELSE '2'
END AS [Shift],
--If time is between 7am and 7pm then Shift 1, else Shift 2
我想将它插入到我已有的查询中,然后让它也按班次分组
SELECT
T6.U_ORC_BE_StyleName AS [Style Name],
T0.[ItemCode],
STUFF(T0.[ItemCode], 1, 6, '') AS [Shortened ItemCode],
SUM(T0.[PlannedQty]) AS [Planned Qty],
SUM(T0.CmpltQty) AS [Actual Qty],
SUM(T0.CmpltQty) - SUM(T0.PlannedQty) AS [Qty Difference],
SUM(T5.U_ORC_BE_HECTOLITER * T0.CmpltQty) AS [Total Hectoliters],
CASE
WHEN [.......]
THEN
WHEN [.......]
THEN
END AS [Line],
T0.U_ORC_BE_ProdDate AS [Date Produced]
FROM [.......]
GROUP BY T6.U_ORC_BE_StyleName, T0.[ItemCode], T5.Code , T0.U_ORC_BE_ProdDate
它不断抛出一个错误,虽然我怀疑这是由于试图按别名分组
“每个GROUP BY表达式必须至少包含一个非外部引用的列。”要按计算列(如case语句)进行分组,还必须将该语句包含在GROUP BY中。例如:
SELECT
CASE ... END AS CaseStatement,
[YourColumns]
FROM YourTable
GROUP BY CASE ... END
要按计算列(如case语句)分组,还必须在GROUPBY中包含该语句。例如:
SELECT
CASE ... END AS CaseStatement,
[YourColumns]
FROM YourTable
GROUP BY CASE ... END
如错误所述,您不能按别名分组。当您的小组结束后,您必须复制整个案例
select
....
group by
T6.U_ORC_BE_StyleName, T0.[ItemCode], T5.Code , T0.U_ORC_BE_ProdDate,
CASE
WHEN [.......]
THEN
WHEN [.......]
THEN
END
如错误所述,您不能按别名分组。当您的小组结束后,您必须复制整个案例
select
....
group by
T6.U_ORC_BE_StyleName, T0.[ItemCode], T5.Code , T0.U_ORC_BE_ProdDate,
CASE
WHEN [.......]
THEN
WHEN [.......]
THEN
END
抛出的错误是什么?抱歉,我已编辑问题以包含错误。选择中的
T0.U\U ORC\U BE\U ProdDate
,如果未选择它,则从Group by
中删除抛出的错误是什么?抱歉,我已编辑问题以包含错误。选择中的T0.U\U ORC\U BE\U ProdDate
,如果您没有选择它,那么从组中删除的看起来很明显!非常感谢。看起来很明显!非常感谢。这样给我就更有意义了。谢谢你的帮助。这样给我会更有意义。谢谢你的帮助。