簡體   English   中英

帶有“Union”和“GroupBy”的“Order By”(Oracle)

[英]'Order By' with 'Union' and 'GroupBy' (Oracle)

早上好。 我有一個包含 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 數據庫。 非常感謝

我建議您將union查詢移至子查詢,並在外部 scope 中排序:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM