我有一个包含以下列的表格
toolid, Quantity, dtfrom, dtto, projectid etc.
我们有工具和项目的主表。这些工具具有特定时期的许可证,例如dtfrom
2012 年 1 月 1 日和 2012 年 3 月 30 日dtto
。
我必须显示特定月份购买的工具数量的月度报告。报告看起来像
sno toolname projectname quantity jan feb mar apr ......
请帮助编写 SQL 查询。
我有一个包含以下列的表格
toolid, Quantity, dtfrom, dtto, projectid etc.
我们有工具和项目的主表。这些工具具有特定时期的许可证,例如dtfrom
2012 年 1 月 1 日和 2012 年 3 月 30 日dtto
。
我必须显示特定月份购买的工具数量的月度报告。报告看起来像
sno toolname projectname quantity jan feb mar apr ......
请帮助编写 SQL 查询。
如果出现任何性能问题,您可以尝试使用 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
你必须做这样的事情:
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