WITH sourceData AS
(
SELECT appName, tableName, TableDataNum,WarnningFlag,DBLevel,ShareFolderFileNum, ROW_NUMBER() over(partition by appName, tableName order by insertTime desc) as num from dataCheckLog
where insertTime >= DATEADD(month,-2,GETDATE()) and WarnningFlag =0
)
select appName, tableName,ShareFolderFileNum,
ISNULL(sum(TableDataNum) / count(*),NULL) as avgLast30d into #avgLast30day from sourceData t1
where num <= 30
group by appName, tableName,ShareFolderFileNum
怎么让ShareFolderFileNum这个字段从group by中去掉显示原本的数据
或者有没有什么聚合函数可以做到
感谢
你都group by了,后面跟的是sum之类的方法,肯定没有办法显示
你要不再嵌套一层select
再嵌套一层with吗
套一层with然后查出来两个结果关联上再加个时间戳把数据对应上是这个意思吗
@酒叟: 是的,就是把你分组后得到的数据,作为查询条件,再把你需要的列都列出来
FileFlag= case when t1.TableDataNum<>t2.ShareFolderFileNum
then 1
else 0
end,
--FileFlag=t1.FileFlag,
DBLevel=t1.DBLevel
from #queryTemp t1
inner join dbo.dataCheckLog t2
on t1.appName = t2.appName
and convert(varchar(8), t2.InsertTime, 112) = convert(varchar(8), getdate(), 112)
and t1.tableName=t2.tablename
where t2.appname is not null
在那一段代码搞有点麻烦了,还是在下面改一下关联得了,感谢两位大佬帮我
是要在结果中去掉ShareFolderFileNum这一列吗
– 长别 1年前@长别: 不是,是在结果中把ShareFolderFileNum个值不分组显示出来
– 酒叟 1年前