Sql ';订购人';与';工会';和';GroupBy';(甲骨文)

Sql ';订购人';与';工会';和';GroupBy';(甲骨文),sql,oracle,sql-order-by,union,Sql,Oracle,Sql Order By,Union,早上好。我有一个包含Group By和Union表的查询。问题是当我试图排序最终结果时。我总是遇到一个错误: SELECT {Account}.[Id], {Account}.[AccountName], {Account}.[Project], {Account}.[Initiative], {Account}.[AccountName], {Application}.[Id], {Application}.[ApplicationName] FROM {Account} INNER JOIN

早上好。我有一个包含Group By和Union表的查询。问题是当我试图排序最终结果时。我总是遇到一个错误:

SELECT {Account}.[Id], {Account}.[AccountName], {Account}.[Project], {Account}.[Initiative], {Account}.[AccountName], {Application}.[Id], {Application}.[ApplicationName]
FROM {Account}
INNER JOIN {ApprovalWorkUnitDetail} ON {ApprovalWorkUnitDetail}.[AccountID] = {Account}.[Id]
INNER JOIN {Issue} ON {Issue}.[Id] = {ApprovalWorkUnitDetail}.[IssueID]
INNER JOIN {ServiceRequest} ON {ServiceRequest}.[Id] = {Issue}.[ServiceRequestId]
INNER JOIN {ServiceRequestProduct} ON {ServiceRequestProduct}.[ServiceRequestId] = {ServiceRequest}.[Id]
INNER JOIN {Product} ON {Product}.[Id] = {ServiceRequestProduct}.[ProductId]
LEFT JOIN {Application} ON {Application}.[Id] = {Account}.[ApplicationID]
WHERE ({ApprovalWorkUnitDetail}.[ContractID] = @ContractID)
    AND ({ServiceRequest}.[Id] = @ServiceRequestID OR @ServiceRequestID = @NullIdentifier)
    AND ({Product}.[Id] = @ProductID OR @ProductID = @NullIdentifier)
    AND ({ApprovalWorkUnitDetail}.[MonthIdentifier] = @MonthIdentifier)
    AND ({ApprovalWorkUnitDetail}.[YearIdentifier] = @YearIdentifier)
    AND ({Issue}.[PaymentStatusID] = @PaymentStatusApprovedID)

UNION

SELECT {Account}.[Id], {Account}.[AccountName], {Account}.[Project], {Account}.[Initiative], {Account}.[AccountName], {Application}.[Id], {Application}.[ApplicationName]
FROM {Account}
INNER JOIN {ApprovalRefinementDetail} ON {ApprovalRefinementDetail}.[AccountID] = {Account}.[Id]
INNER JOIN {Worklog} ON {Worklog}.[Id] = {ApprovalRefinementDetail}.[WorklogID]
INNER JOIN {Issue} ON {Worklog}.[IssueId] = {Issue}.[Id]
INNER JOIN {ServiceRequest} ON {ServiceRequest}.[Id] = {Issue}.[ServiceRequestId]
INNER JOIN {ServiceRequestProduct} ON {ServiceRequestProduct}.[ServiceRequestId] = {ServiceRequest}.[Id]
INNER JOIN {Product} ON {Product}.[Id] = {ServiceRequestProduct}.[ProductId]
LEFT JOIN {Application} ON {Application}.[Id] = {Account}.[ApplicationID]
WHERE ({ApprovalRefinementDetail}.[ContractID] = @ContractID)
    AND ({Product}.[Id] = @ProductID OR @ProductID = @NullIdentifier)
    AND ({ServiceRequest}.[Id] = @ServiceRequestID OR @ServiceRequestID = @NullIdentifier)
    AND ({ApprovalRefinementDetail}.[MonthIdentifier] = @MonthIdentifier)
    AND ({ApprovalRefinementDetail}.[YearIdentifier] = @YearIdentifier)
    AND ({Worklog}.[PaymentStatusID] = @PaymentStatusApprovedID)
 
GROUP BY {Account}.[Id], {Account}.[AccountName], {Account}.[Project], {Account}.[Initiative], {Account}.[AccountName], {Application}.[Id], {Application}.[ApplicationName]
ORDER BY {Account}.[AccountName]
我不知道为什么我总是收到错误ORA-00904,它表明AccountName是一个无效的标识符

我正在使用ORACLE数据库。
非常感谢

我建议将您的
联合
查询移动到子查询,并在外部范围内排序:

select *
from (
    -- your big query
) t
order by accountname

UNION
操作符处理完行集时,列不再与任何表关联。它们只是
联合
的列。Oracle和方括号用于分隔标识符?我会尝试
按[AccountName]
排序。此代码看起来不像Oracle代码。@Gordon Linoff这是OutSystems语法,但使用Oracle数据库非常感谢。完美地工作