0

我有一个包含以下列的表格

toolid, Quantity, dtfrom, dtto, projectid etc.

我们有工具和项目的主表。这些工具具有特定时期的许可证,例如dtfrom2012 年 1 月 1 日和 2012 年 3 月 30 日dtto

我必须显示特定月份购买的工具数量的月度报告。报告看起来像

sno  toolname projectname quantity jan feb mar apr ......

请帮助编写 SQL 查询。

4

2 回答 2

1

如果出现任何性能问题,您可以尝试使用 PIVOT

select * from (
select sum(quantity) quantity,left(DATENAME(MM, dtfrom),3) month,projectid from test
group by DATENAME(month, dtfrom),projectid
) as p
PIVOT(
  MAX(quantity) for month in ([Jan],[Feb],[Mar],[Apr],[May],[Jun],[Jul],[Aug],[Sep],[Oct],[Nov],[Dec])
)as pvt 

小提琴

于 2012-08-17T08:58:41.813 回答
0

你必须做这样的事情:

select 
  sno,
  toolname,
  projectname, 
  year(dtfrom) as year,
  jan=sum(case when month(dtfrom) =1 and month(dtto)=1 then quantity else 0 end),
  feb=sum(case when month(dtfrom) =2 and month(dtto)=2 then quantity else 0 end)
       .....
from <table>
group by toolname,
  projectname,
  dtfrom
于 2012-08-17T06:35:25.227 回答