Sql server SQL Server-根据第三季度的费用金额选择前10名提供商

Sql server SQL Server-根据第三季度的费用金额选择前10名提供商,sql-server,Sql Server,我很难弄清楚我需要做什么才能使这项工作正常运行并满足这些要求: 生成一个SELECT语句,从中找出前10个提供者 信用db基于第三季度的总费用金额 以下是我目前掌握的情况: select top 10 provider_no, charge_amt, charge_dt from charge group by provider_no order by charge_amt desc; 我能得到一些帮助来完成这个查询吗?这样它只显示10行,并且不会有重复的提供者编号,按照一年中第三季度的费用

我很难弄清楚我需要做什么才能使这项工作正常运行并满足这些要求:

生成一个SELECT语句,从中找出前10个提供者 信用db基于第三季度的总费用金额

以下是我目前掌握的情况:

select top 10 provider_no, charge_amt, charge_dt
from charge
group by provider_no 
order by charge_amt desc;

我能得到一些帮助来完成这个查询吗?这样它只显示10行,并且不会有重复的提供者编号,按照一年中第三季度的费用金额和费用dt排序?

我假设费用dt是费用的日期时间。因此,该声明应该如下所示:

select top 10 provider_no, datepart(qq, charge_dt), sum(charge_amt)
from charge
where datepart(qq, charge_dt) = 3
group by provider_no, datepart(qq, charge_dt)
order by sum(charge_amt) desc

表的结构是什么?列名称?提供商编号是识别提供商的INT列,charge_amt是数据类型money的列,其中包含各种已收取的金额,charge_dt是包含收费日期的列。您还需要其他信息吗?您的表是否只包含一年的数据?是的,它包含。这才一年,看起来不错。有没有办法在第三季度内仍然显示日期(charge_dt)而不是仅显示3?这对我来说没有意义,因为该报表是按季度的日期对费用进行分组的。无论如何,您可以将
datepart(qq,charge\u dt)
(都在selectangroupby子句中)替换为
cast(datepart(yyyy,charge\u dt)作为nvarchar)+'/'+cast(datepart(qq,charge\u dt)作为nvarcharchar)
哦,好的。这是有道理的。谢谢你的帮助!