【发布时间】:2023-04-03 16:41:01
【问题描述】:
我写了一个小的内部连接,它从两个不同的数据库表中获取列; WKS_LOG_VIEW 和 FDE_XML_VIEW。我在 ACID/AID 上匹配它们,并在所选日期和机器内返回数据(这有效)。然后我尝试添加一个 MAX 选择查询,它只会放入最新的 EventTime 行。因为我只希望每个 EventTime 条目有一条记录。我不需要很多 EventTime 条目,只是最新的。我的查询没有返回任何条目。
select
EXCDS1.dbo.FDE_XML_VIEW.ACID,
EXCDS1.dbo.FDE_XML_VIEW.SID,
EXCDS1.dbo.FDE_XML_VIEW.STAR,
EXCDS1.dbo.FDE_XML_VIEW.ROUTE,
EXCDS.dbo.WKS_LOG_VIEW.AID,
EXCDS.dbo.WKS_LOG_VIEW.Sector,
EXCDS.dbo.WKS_LOG_VIEW.LocalCoAltIn
EXCDS.dbo.WKS_LOG_VIEW.EventTime
from EXCDS1.dbo.FDE_XML_VIEW
inner join
EXCDS.dbo.WKS_LOG_VIEW
on AID = ACID
where
LastUpdateMachine = 'R02'
and
convert (date, EventTime) = '2021-03-11'
and
EXCDS.dbo.WKS_LOG_VIEW.EventTime = (SELECT MAX(lv.EventTime) from EXCDS.dbo.WKS_LOG_VIEW as lv
where
lv.AID = EXCDS.dbo.WKS_LOG_VIEW.AID)
order by ACID, EventTime;
我对 SQL 很陌生,如果我犯了明显的错误,敬请见谅。
【问题讨论】:
-
仅供参考3+ naming is to be deprecated;不要使用 3 部分(或您所听到的 4 部分)命名来引用您的列,为您的对象命名,然后使用这些别名来限定您的代码,这将使它更加简洁和可读。空格和良好使用换行符也很重要。该查询很难阅读,看起来您有 2 个
WHEREs(这是不允许的)。
标签: sql sql-server