SQL Server 2008-R2 と Transact SQL を使用しています。
複数のテーブル/ビューからデータを返すステータス レポートがあり、UNION を使用して行を「結合」します。
SQL スクリプトからの抜粋は次のとおりです。
SELECT
NR.FormStatus AS [Item],
(SELECT COUNT(PerinatalReportID) FROM NotificationDatesForReport
WHERE FormStatus = NR.FormStatus AND NotificationDate BETWEEN dbo.DateNoTime(GetDate()) AND dbo.DateNoTime(GetDate() + 1)) AS [Today],
(SELECT COUNT(PerinatalReportID) FROM NotificationDatesForReport WHERE FormStatus = NR.FormStatus) AS [Total]
FROM
NotificationDatesForReport AS NR
GROUP BY
NR.FormStatus, NR.DisplayOrder
UNION ALL
SELECT
'Distinct password requests',
(SELECT COUNT(DISTINCT ToEMail) FROM PasswordRequests
WHERE DateProcessed BETWEEN dbo.DateNoTime(GetDate()) AND dbo.DateNoTime(GetDate() + 1)) AS [Today],
(SELECT COUNT(DISTINCT ToEMail) FROM PasswordRequests) AS [Total]
これは期待どおりに機能しますが、句を含むスクリプトの最初の部分の項目の順序はGROUP BY
ランダムな順序で表示されます。私がやりたいのは、スクリプトのそのセクションだけを並べ替えることですが、SORT
BY 句がその最後の UNION の後に行かなければならないため、それを行う方法が見つかりません。
すべての提案を歓迎します。