SQL查询优化统计信息
我想知道是否有人能给我一个查询来得到结果 初始表格:SQL查询优化统计信息,sql,performance,Sql,Performance,我想知道是否有人能给我一个查询来得到结果 初始表格: ID Year Quantity 结果表: ID 2009_Quantity 2010_Quantity 2011_Quantity ... 我现在做的是: Select ID , (select sum(Id.Quantity) from Initial_Database id where id.Year = 2009) , (select sum(Id.Quantity) from Initial_Databas
ID Year Quantity
结果表:
ID 2009_Quantity 2010_Quantity 2011_Quantity ...
我现在做的是:
Select ID
, (select sum(Id.Quantity) from Initial_Database id where id.Year = 2009)
, (select sum(Id.Quantity) from Initial_Database id where id.Year = 2010)
from Initial_Database i
Group BY ID
但这需要花费数小时来处理数百万条记录,而这不是一个选项
我还尝试:
Select ID
, CASE WHEN i.Year = 2009 THEN sum(Id.Quantity) ELSE 0 END
, CASE WHEN i.Year = 2010 THEN sum(Id.Quantity) ELSE 0 END
from Initial_Database i
Group BY ID
速度更快,但这给了我两行我不想要的行。试试这样:
Select ID
, SUM(CASE WHEN i.Year = 2009 THEN Id.Quantity ELSE 0 END)
, SUM(CASE WHEN i.Year = 2010 THEN Id.Quantity ELSE 0 END)
from Initial_Database i
Group BY ID
我现在很生气,因为我自己没有尝试。。。它似乎有效,我将尝试插入,如果有效,我将标记答案。如果您使用的是SQL Server SUM函数,可以像
SUM(Quantity)OVER(PARTITION BY Year)
@AllanS.Hansen我以前没有使用OVER和PARTITION BY,我不是一个真正的DBA'er。所以我真的不知道怎么做<代码>从初始_数据库中选择不同的年份、总和(数量)和(按年份划分)以查看其功能。OVER()函数在许多情况下可以帮助您避免子查询,在这种情况下也可能对您有帮助。(我确实认为它们是特定于sql server的,但我相信其他版本也有类似的功能)@AllanS.Hansen这确实给了我每年的一笔钱。但在行中,我仍然需要将它们转换为列。2010 100 - 2011 50 - 2012 70