问题描述
我正在尝试创建CTE以返回发票所有行的总和,但是我收到一个错误:“不是按表达式分组”。不确定出什么问题了吗?谢谢。
with getinvoices as
(
select
i.invoice_nbr,i.invoice_type_id,i.invoice_type_desc,i.invoice_total_amount,ROW_NUMBER() OVER (PARTITION BY i.invoice_nbr ORDER BY i.rowid) rn,sum(i.line_amount) as "Sum Of Line Amount"
FROM ods_dev.invoices i
WHERE i.invoice_date>='7/1/2020' and i.invoice_date<'7/2/2020'
AND i.invoice_nbr IS NOT NULL
Group By
i.invoice_nbr,i.invoice_total_amount
)
Select *
From getinvoices g
Where g.rn = 1
Order by g.invoice_nbr
解决方法
这是问题所在
ROW_NUMBER() OVER (PARTITION BY i.invoice_nbr ORDER BY i.rowid) rn
-------------------------------------------------------^
我不确定您想做什么。也许:
ROW_NUMBER() OVER (PARTITION BY i.invoice_nbr ORDER BY MIN(i.rowid)) as rn
或者您可能想在rowid
中加入GROUP BY
。