繁体   English   中英

T-SQL代码中MAX语句的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM