Order By с объединением и нулевыми значениями SQL Server - PullRequest
0 голосов
/ 21 декабря 2011

Я не знаю, как отсортировать данные во втором операторе 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] ?

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

Вы сортируете весь результат, а не только записи из второго выбора.

Вы можете использовать поле [Идентификатор], чтобы сохранить записи из первого выбора первым:

order by [Identifier], [Error Flag] desc
0 голосов
/ 21 декабря 2011

ORDER BY вычисляется после UNION ALL или других операторов множеств.Поэтому вы должны использовать подвыборы run ORDER BY в этих операторах подбора, вычислять псевдостолбец, который назначает увеличивающийся номер строки, а затем упорядочивать по значению псевдостолбца во внешнем утверждении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...