SQL 按别名分组
SQL GROUP BY alias
我有一个用于表示时间的 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 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
它不断抛出一个错误,我怀疑这是由于试图按别名分组造成的。
"Each GROUP BY expression must contain at least one column that is not an outer reference."
要像 case 语句一样按计算列分组,您还必须在分组依据中包含该语句。例如:
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
我有一个用于表示时间的 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 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
它不断抛出一个错误,我怀疑这是由于试图按别名分组造成的。
"Each GROUP BY expression must contain at least one column that is not an outer reference."
要像 case 语句一样按计算列分组,您还必须在分组依据中包含该语句。例如:
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