SQL 在三重连接中使用最大函数

SQL using max function in triple join

我有 3 个 Table。我想加入他们所有人,我能做到。但是当我尝试使用 MAX 函数时,我得到了错误。

SELECT A.X, B.Y, SUBSTRING(str,CHARINDEX('C.Z',str)+12,4) as score,   MAX(A.Q)
FROM A(NOLOCK)
JOIN B
ON A.BID = B.id 
JOIN  C 
ON   B.Cid = C.ID
WHERE C.ApplicationDate BETWEEN '01-01-2013' AND GETDATE() 
group by B.Customer

如果我不写 MAX 函数,我会得到

第 1 栏、第 2 栏、第 3 栏、第 4 栏

1 , 1 , 1 , 1

1 , 2 , 3 , 5

1 , 3 , 2 , 7

2、3、3、1

2、3、1、5

。 ,. ,. ,.

。 ,. ,. ,.

我想获取 col1 的 1 值的 col4 的最大值。例如 我想在此示例中获得 1,3,2,7 和 2,3,1,5 值。

我该怎么做。感谢您的帮助。

编辑

SELECT InstanceID, CustomerNo, Date, SUBSTRING(str,CHARINDEX('TTHA',str)+12,4) as score, MAX(SecondDate) as 'SearchDate' FROM application(NOLOCK) JOIN application_info ON application.application_info_id = application_info.id JOIN Request ON application.request_id = Request.id WHERE Request.Date BETWEEN '01-01-2000' AND GETDATE() group by InstanceID,CustomerNo,Date,SUBSTRING(str,CHARINDEX('TTHA',str)+12,4)

我算不上你的offer。你能帮我写代码吗?

输出

谢谢

将您的 group by 语句替换为此

group by A.X, B.Y, SUBSTRING(str,CHARINDEX('C.Z',str)+12,4)

可能:但没有详细说明 select 中每一列的来源(table 它来自哪里)我对此表示怀疑...

这假设 instance 和 secondDate 是应用程序中我们关心的唯一字段如果 customerNo 也在 table 中,那么它也需要添加到 内部 select并分组。

假设: InstanceID 和 SecondDate 是应用程序中仅有的 select 列。 应用程序与 application_info 或请求之间的基数导致出现多个记录,并且在对这些值进行分组时导致不正确的结果。

我猜是因为在您的示例中,您的 select 中有 5 列,而输出中只有 4 列。所以我不知道缺少哪一列。

SELECT InstanceID, CustomerNo, 
       Date, SUBSTRING(str,CHARINDEX('TTHA',str)+12,4) as score,  
       SecondDate as 'SearchDate'
FROM (SELECT instanceID, max(SecondDate) SecondDate 
      FROM application 
      GROUP BY instanceID) Application
JOIN application_info 
ON application.application_info_id = application_info.id 
JOIN  Request 
ON   application.request_id = Request.id
WHERE Request.Date BETWEEN '01-01-2000' AND GETDATE()