我有以下 PostgreSQL:
select
A.*,
B.child,
REGEXP_MATCHES(A.b_number, '([^.]*--[0-9]*).*') as number,
sum(cast(A.amount AS decimal)) as sum_amount,
count(A.amount) as cnt_amount
into result
from B
join A on B.name = A.name and B.parent = A.id
join C on A.name = C.name and B.child = C.id
group by A.name, A.unit, number;
select * from result;
但我收到以下錯誤:
SQL 錯誤 [42803]:錯誤:列“A.index”必須出現在 GROUP BY 子句中或用于聚合函式中。
這是什么原因?
我嘗試將A.index添加到 GROUP BY 子句,但它只要求不同的列。我也嘗試創建一個子查詢但失敗了,因為我有兩個連接并且我正在嘗試創建一個新表result。
uj5u.com熱心網友回復:
這是一個GROUP BY修正了問題的版本:
SELECT
A.name,
A.unit,
B.child,
REGEXP_MATCHES(A.b_number, '([^.]*--[0-9]*).*') AS number,
SUM(CAST(A.amount AS decimal)) AS sum_amount,
COUNT(A.amount) AS cnt_amount
INTO result
FROM B
INNER JOIN A ON B.name = A.name AND B.parent = A.id
INNER JOIN C ON A.name = C.name AND B.child = C.id
GROUP BY
A.name,
A.unit,
B.child,
number;
請注意,出現在SELECT子句中的每個列/別名也出現在GROUP BY. 出現在聚合函式中的列是例外。在這種情況下,它們不會出現在GROUP BY.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/348656.html
標籤:sql PostgreSQL
下一篇:請求接收MultipartFile時的MultipartException和IOFileUploadException
