Sql server 比较最近日期的SQL查询

Sql server 比较最近日期的SQL查询,sql-server,max,subquery,Sql Server,Max,Subquery,我试图为每个事务行选择一个位置 问题是客户端可以转移到不同的位置。我已经成功地选择了MAX(ClientLocation.TransferDate),但我不需要那个日期。这个日期是我比较交易发生时客户所在位置的唯一方法 我不断得到结果,其中每个事务都是根据ClientLocation.Location的数量进行复制的 SELECT MAX(ClientLocation.TransferDate, Transaction.Date, Client.Name, Location.Name FROM

我试图为每个事务行选择一个位置

问题是客户端可以转移到不同的位置。我已经成功地选择了MAX(ClientLocation.TransferDate),但我不需要那个日期。这个日期是我比较交易发生时客户所在位置的唯一方法

我不断得到结果,其中每个事务都是根据ClientLocation.Location的数量进行复制的

SELECT MAX(ClientLocation.TransferDate, Transaction.Date, Client.Name, Location.Name
FROM Transaction
JOIN Client ON Transaction.ClientID = Client.ID
JOIN ClientLocation ON Client.ID = ClientLocation.ClientID 
JOIN Location ON ClientLocation.LocationID = Location.ID
WHERE Client.ID=ClientLocation.ClientID < Transaction.Date
GROUP BY Transaction.Date, Client.Name, Location.Name
选择MAX(ClientLocation.TransferDate、Transaction.Date、Client.Name、Location.Name
从交易
在事务上加入客户端。ClientID=Client.ID
在Client.ID=ClientLocation.ClientID上加入ClientLocation
ClientLocation.LocationID=Location.ID上的联接位置
其中Client.ID=ClientLocation.ClientID
我刚刚尝试对您的问题进行原型化。部分问题是您的SQL不是有效的SQL DML语句。问题包括“MAX(…”聚合器列没有右括号、使用保留关键字作为名称的“Transaction”表以及WHERE子句无效(它包括多个不协同工作的运算符)

首先,请尝试以下方法:

SELECT MAX(t.TransferDate), t.Date, c.Name, l.Name
FROM [Transaction] t JOIN Client c ON t.ClientID = c.ID
JOIN ClientLocation cl ON c.ID = cl.ClientID 
JOIN Location l ON cl.LocationID = l.ID
WHERE c.ID = cl.ClientID 
GROUP BY t.Date, c.Name, l.Name

它至少可以编译,尽管还不清楚您实际上在尝试做什么。但是,我怀疑,您的问题至少有一部分是,您的事务表中没有任何内容指示给定事务与哪个ClientLocation关联。因此,以后尝试按该因素分组是不可能的,除非u更改您的架构。

我刚刚尝试对您的问题进行原型化。部分问题是您的SQL不是有效的SQL DML语句。问题包括您的“MAX(…”聚合器列没有右括号,您的“Transaction”表使用保留关键字作为其名称,以及您的WHERE子句无效(它包括多个不协同工作的运算符)

首先,请尝试以下方法:

SELECT MAX(t.TransferDate), t.Date, c.Name, l.Name
FROM [Transaction] t JOIN Client c ON t.ClientID = c.ID
JOIN ClientLocation cl ON c.ID = cl.ClientID 
JOIN Location l ON cl.LocationID = l.ID
WHERE c.ID = cl.ClientID 
GROUP BY t.Date, c.Name, l.Name

它至少可以编译,尽管还不清楚您实际上在尝试做什么。但是,我怀疑,您的问题至少有一部分是,您的事务表中没有任何内容指示给定事务与哪个ClientLocation关联。因此,以后尝试按该因素分组是不可能的,除非u更改模式。

能否为客户机、ClientLocation、Location和Transaction表提供DDL?一些示例数据和查询这些表时所需的输出也会有所帮助。能否为客户机、ClientLocation、Location和Transaction表提供DDL?查询同一wou时所需的一些示例数据和输出我也会帮忙。