【发布时间】:2018-04-12 19:49:08
【问题描述】:
我遇到了 SQL Server 2005 数据透视表查询。
考虑以下表格和数据...
create table dbo.orders(orderid int primary key, customerid int, productid int, amount money, count int, quarter char(2))
insert into dbo.orders(orderid, customerid, productid, amount, count, quarter) values(1001, 9000, 20001, 5, 1, 'Q4')
insert into dbo.orders(orderid, customerid, productid, amount, count, quarter) values(1002, 9000, 20001, 10, 1, 'Q5')
insert into dbo.orders(orderid, customerid, productid, amount, count, quarter) values(1003, 9000, 20002, 15, 1, 'Q4')
insert into dbo.orders(orderid, customerid, productid, amount, count, quarter) values(1004, 9000, 20002, 20, 1, 'Q5')
您现在有一个包含以下记录的表...
customerid productid amount count quarter
---------- --------- ------ ----- -------
9000 20001 5.00 1 Q4
9000 20001 10.00 1 Q5
9000 20002 15.00 1 Q4
9000 20002 20.00 1 Q5
现在我有以下枢轴查询...
select *
from
(
select o.customerid, o.productid, o.amount, o.count, o.quarter
from dbo.orders o (nolock)
)
src
pivot
(
sum(amount)
for quarter in([Q4], [Q5])
)piv
这会产生以下结果。
customerid productid count Q4 Q5
---------- --------- ------ ----- -------
9000 20001 1 5.00 10.00
9000 20002 1 15.00 20.00
问题是我的计数已关闭。我希望结果看起来像这样......
customerid productid count Q4 Q5
---------- --------- ------ ----- -------
9000 20001 2 5.00 10.00
9000 20002 2 15.00 20.00
如果使用计数作为与 productid 相同的枢轴值,则为枢轴。
我可以从查询中删除计数并作为子查询进行计算,但是我会两次访问数据库。
有没有人知道如何调整和颠倒计数?
谢谢
【问题讨论】:
标签: sql sql-server-2005 pivot