gpt4 book ai didi

sql-server-2008 - 在包含 UNION 的报告中对 T-SQL 中的行进行排序

转载 作者:行者123 更新时间:2023-12-04 07:08:23 25 4
gpt4 key购买 nike

我正在使用 SQL Server 2008-R2 和 Transact SQL。

我有一个状态报告,它从多个表/ View 返回数据并使用 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 之后。

欢迎所有建议。

最佳答案

您可以像这样将整个内容包装在 CTE 中...

WITH cte AS
(
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],
0 AS [Section],
ROW_NUMBER() OVER (ORDER BY NR.FormStatus, NR.DisplayOrder) AS [DisplayOrder]
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],
1 AS [Section],
ROW_NUMBER() OVER (ORDER BY ToEMail) AS [DisplayOrder]
)

SELECT ***desired columns*** FROM cte ORDER BY Section, DisplayOrder

关于sql-server-2008 - 在包含 UNION 的报告中对 T-SQL 中的行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16814323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com