使用列名称上的别名执行SQL查询时,我尝试在同一查询中引用该别名以对其执行计算。
如:
SELECT QUANTITY,
AMOUNT,
Count(AMOUNT) AS CntAmount,
Sum(CNTAMOUNT)
FROM MY_TEST
GROUP BY QUANTITY,
AMOUNT
此查询只是一个示例。
我认为您通常会将查询作为别名引用,但这不起作用。如:
SELECT *
FROM (SELECT QUANTITY,
AMOUNT,
Count(AMOUNT) AS CntAmount,
Sum(A.CNTAMOUNT)
FROM MY_TEST
GROUP BY QUANTITY,
AMOUNT) a
答案 0 :(得分:0)
您可以使用CTE:
WITH CTE1
AS (
SELECT Quantity
,Amount
,count(amount) AS CntAmount
FROM my_test
GROUP BY Quantity
,Amount
)
SELECT Quanitity
,Amount
,CntAmount
,SUM(CntAmount) AS Myfield
FROM CTE1
GROUP BY Quanitity
,Amount
,CntAmount
答案 1 :(得分:0)
您可以在同一查询中使用别名,但是......如果您需要使用聚合函数的别名(例如SUM(amount) AS aggregated_alias
,AVG()
,COUNT()
等)在同一个查询中,您必须使用子查询。
以下是一个示例子查询:
SELECT
a.QUANTITY,
a.AMOUNT,
SUM(a.CntAmount) AS SUM_CNTAMOUNT
FROM (SELECT
QUANTITY,
AMOUNT,
Count(AMOUNT) AS CntAmount
FROM MY_TEST
GROUP BY QUANTITY, AMOUNT) AS a
GROUP BY a.QUANTITY, a.AMOUNT
答案 2 :(得分:0)
据我所知,您无法直接使用别名对其执行计算。
因为如果您使用任何名称(例如'xyz')来执行计算,则会搜索表格&如果您使用了别名来执行计算,则它不会永久显示在您的桌面上。
这就是为什么你会收到诸如此类的错误 列名不存在。或列名无效。
In your case you can do like this :
;with CTE as
(
SELECT QUANTITY,
AMOUNT,
Count(AMOUNT) AS CntAmount
FROM MY_TEST
GROUP BY QUANTITY,
AMOUNT
)
select sum(CntAmount),QUANTITY,AMOUNT as a from cte
group by
GROUP BY QUANTITY,
AMOUNT
但是,如果您的要求是仅使用别名,那么您也可以将代码包装到CTE&然后 如果需要,可以使用别名
请参考这个。 enter link description here