我有3张桌子。我想加入他们,我可以做到。但是当我尝试使用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功能,我会
Col1,Col2,Col3,Col4
2,3,1,5
我想获得col4' s值的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)
我不算你的报价。你能帮我解决一下我的代码吗?
由于
答案 0 :(得分:2)
将您的group by
语句替换为此
group by A.X, B.Y, SUBSTRING(str,CHARINDEX('C.Z',str)+12,4)
答案 1 :(得分:0)
可能:但是没有关于选择中每一列的来源的详细信息(来自它的表)我怀疑它......
这假设instance和secondDate是我们关注的Application中的唯一字段如果customerNo也在该表中,则需要将其添加到内部选择和分组中。
假设: InstanceID和SecondDate是Application中唯一的选择列。 应用程序与application_info或Request之间的基数导致出现多条记录,并且在对这些值进行分组时会导致不正确的结果。
我在猜测,因为在你的例子中,你的选择中有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()