[英]issue with MAX statement in t-sql code
这是代码:
Select BCPP.*
from ViewPBCPP BCPP
inner join
(
Select MBC.PC PC
,MRT.Name CT
,Max(dbo.CalcDatefromUTC(MBC.CreatedDate)) as LRDate
from TableBACC MBC
inner join TableSC.RT MRT
ON MBC.RTid = MRT.id
where MBC.Isdeleted = 'False'
and MBC.PC <> 'NULL'
Group by MBC.PC
,MRT.Name
) MBCR
ON BCPP.P_id = MBCR.PC
and BCPP.CreatedDate = MBCR.LRDate
and BCPP.CT = MBCR.CT
现在Max(dbo.CalcDatefromUTC(MBC.CreatedDate))
实际上是一个函数
上面的查询与Max(dbo.CalcDatefromUTC(MBC.CreatedDate))
现在当我写
Max(dbo.CalcDatefromUTC(MBC.CreatedDate)) + Min(dbo.CalcDatefromUTC(MBC.CreatedDate))
我根本无法从上面编写的此查询中提取任何值
如果我只写
(dbo.CalcDatefromUTC(MBC.CreatedDate))
它给我一个错误,它不包含聚合函数或按功能分组
我真的想要这个
(dbo.CalcDatefromUTC(MBC.CreatedDate))
这样我就可以使用此函数的所有值,而不仅仅是MAX的值
如何更改上面编写的代码以实现我的目标?
任何人??
您不能在SELECT
列表中拥有dbo.CalcDatefromUTC(MBC.CreatedDate)
,因为您也不能拥有MBC.CreatedDate
因为它不在GROUP BY
列表中。
尽管可以使用MAX(MBC.CreatedDate)
因为它在thta列上使用了聚合函数(MAX)。 您还可以拥有:
dbo.CalcDatefromUTC(MAX(MBC.CreatedDate)) as LRDate
实际上是一样的(尽管可能更快),如下所示:
MAX(dbo.CalcDatefromUTC(MBC.CreatedDate)) as LRDate
根据您的评论,我认为以上内容不是很有帮助。 也许按MBC.CreatedDate
分组也是您想要的:
Select BCPP.*
from ViewPBCPP BCPP
inner join
(
Select MBC.PC PC
,MRT.Name CT
,dbo.CalcDatefromUTC(MBC.CreatedDate) as LRDate
from TableBACC MBC
inner join TableSC.RT MRT
ON MBC.RTid = MRT.id
where MBC.Isdeleted = 'False'
and MBC.PC <> 'NULL'
Group by MBC.PC
,MBC.CreatedDate --- added
,MRT.Name
) MBCR
ON BCPP.P_id = MBCR.PC
and BCPP.CreatedDate = MBCR.LRDate
and BCPP.CT = MBCR.CT
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.