【发布时间】:2012-05-01 05:38:16
【问题描述】:
注意:我正在使用 SQL 2000。
我想通过为此加入执行类似的操作来选择 t2.JobCompletionTime 的 MAX 日期的行,但我知道这不是正确的代码/语法,因为它不起作用......但我希望它是明确我想要做什么。
LEFT OUTER JOIN (
SELECT *
FROM DSM_StandardProcedureActivityView
WHERE
( (PackageName = 'Adobe Acrobat 10' AND PackageVersion = '-1.0') AND
(MAX (JobCompletionTime))
)
) t2 ON t1.UUID = t2.UUID
我现在的完整工作 SQL 代码是:
SELECT
t1.Business,
t1.[Sub-Business],
t1.Pole,
t1.DomainManager,
t1.ScalabilityServer,
t1.Location,
t1.Country,
t1.Name,
t3.VolumeName,
t3.VolumeFreeInMB,
t3.VolumeSizeInMB,
FROM (
SELECT *
FROM DSM_StandardGroupMembersView
WHERE
( GroupName = 'Adobe Acrobat'
)
) t1
LEFT OUTER JOIN (
SELECT *
FROM DSM_StandardProcedureActivityView
WHERE
( (PackageName = 'Adobe Acrobat 10' AND PackageVersion = '-1.0')
)
) t2 ON t1.UUID = t2.UUID
LEFT OUTER JOIN (
SELECT *
FROM DSM_StandardHardwareDiskUsageView
WHERE VolumeName = 'C:\'
) t3 ON t1.Name = t3.Name
ORDER BY t1.Business, t1.[Sub-Business], t1.Pole, t1.DomainManager, t1.ScalabilityServer, t1.Country, t1.Location, [Job Status], t1.Name
【问题讨论】:
-
我个人会考虑添加几个表格来保存您的
Job Status和Error Description描述。此外,在引用主表和连接表时,我不会使用子查询,而只是为每个主查询 WHERE 子句的一部分创建 WHERE 子句。这将使查询更具可读性。 -
从你的问题中不清楚你在追求什么。您能否详细说明以下声明:“如果以下为真,我将 t2.JobCompletionTime 设置为 NULL,但我仍想选择 MAX t2.JobCompletionTime...”。
-
我编辑了上面的问题,希望能提供更多的清晰度。
标签: sql sql-server tsql sql-server-2000