我无法在以下联合查询的第二个select语句中对数据进行排序。
期望的结果将是:
C null null null null null
I xxxx xxxx xxxx 1 xxxx
I xxxx xxxx xxxx 1 xxxx
I xxxx xxxx xxxx null xxxx
I xxxx xxxx xxxx null xxxx
以下是代码:
select 'C' [Identifier]
,null [Acct/Invoice #]
,null [Check #/Pay Amount]
,null [Check Amount/Error Code]
,null [Error Flag]
,null [Trx Account #]
union all
select 'I' [Indentifer]
,final_inv_number [Invoice #]
,final_final_pay_amount [Pay Amount]
,final_trans_code [Error Code]
,case when final_is_reconciled = 1 then 1 end [Error Flag]
,case when final_parse_type = 'ERROR CREATED' or final_parse_type = 'PREV PD'
then final_account_number else null end [Trx Account #]
from #final
where final_net_pay_amount <> 0
--order by [Error Flag] ?
答案 0 :(得分:1)
您正在对整个结果进行排序,而不仅仅是第二次选择的记录。
您可以使用[标识符]字段保留第一个选择的记录:
order by [Identifier], [Error Flag] desc
答案 1 :(得分:0)
ORDER BY
在UNION ALL
或其他集合运算符之后计算。因此,您应该对这些子选择语句使用子选择run ORDER BY
,计算一个指定递增行号的伪列,然后按外部语句中伪列的值排序。