我请求你对此作出善意的解释。
我有一个日历表,每天都有一排。此外,我还有一个包含备份结果的表,其中存储了备份开始的日期和时间。
我的目标是取得这样的结果:
date of month | serverid | datetime of backup | result | note (not in table, for info only)
2022-02-02 | 11 | 2022-02-02 19:00 | OK | backup was successful
2022-02-03 | NULL | NULL | NULL | backup was not even start
2022-02-04 | 11 | 2022-02-04 19:00 | FAILED | backup started but error occured我试过左外连接和外接。左外部联接没有返回未启动备份的空行,外部应用程序运行得更好,但是当我按年份、月份(从日历表)和服务器筛选结果时,空行也会消失。
因此,我的目标是选择指定月份和年份中日历表中的所有行,并通过backup列将结果分配给它们,以查看未启动备份的天数。
请你指出正确的方向好吗?
向你问好,简
查询示例:
SELECT [SqlDt], [Year], [Month], A.*
FROM [portal].[dbo].[Calendar] C OUTER APPLY
(SELECT *
FROM [DS-Backup] D
WHERE [C].[SqlDt] = CAST(D .VersionDate AS Date)) A
SELECT dbo.Calendar.SqlDt, dbo.Calendar.Year, dbo.Calendar.Month, dbo.[DS-Backup].EID, dbo.[DS-Backup].VersionDate, dbo.[DS-Backup].VersionStatus
FROM dbo.Calendar LEFT OUTER JOIN
dbo.[DS-Backup] ON dbo.Calendar.SqlDt = CAST(dbo.[DS-Backup].VersionDate AS Date)发布于 2022-02-17 15:59:52
感谢所有有用的逗号,我没有在加入前用备份结果过滤表。
现在它正按照我想要的方式工作:
SELECT [SqlDt],[Year],[Month],[Backups].*
FROM [portal].[dbo].[Calendar]
LEFT JOIN ( SELECT * FROM [portal].[dbo].[DS-WindowsServerBackup] WHERE EID=11) as Backups
ON Calendar.SqlDt = CAST([Backups].[VersionDate] as Date)https://stackoverflow.com/questions/71159055
复制相似问题