日期:2014-05-19  浏览次数:20446 次

汇总新问题
现在我需要统计所有的物料中,日期最新的单价
字段分别是物料编码\单价\日期

要统计所有的物料中,日期最新的三个单价

这个已经解决了,能够取出三个单价
但是显示的时候,需要把数据横向显示为一行
物料   单价1   单价2   单价3

------解决方案--------------------

Create Table TEST
(物料编码 Varchar(10),
单价 Int,
日期 DateTime)
Insert TEST Select 'A ', 10, '2007-03-01 '
Union All Select 'A ', 80, '2007-03-02 '
Union All Select 'A ', 12, '2007-03-13 '
Union All Select 'A ', 20, '2007-03-05 '
Union All Select 'A ', 13, '2007-03-11 '
Union All Select 'B ', 10, '2007-03-01 '
Union All Select 'B ', 13, '2007-03-02 '
GO
Select
物料编码,
SUM(Case ID When 1 Then 单价 Else 0 End) As 单价1,
SUM(Case ID When 2 Then 单价 Else 0 End) As 单价2,
SUM(Case ID When 3 Then 单价 Else 0 End) As 单价3
From
(
Select
ID =(Select Count(*) From TEST Where 物料编码 = A.物料编码 And 日期 > = A.日期), *
From
TEST A
) B
Group By 物料编码
GO
Drop Table TEST
--Result
/*
物料编码 单价1 单价2 单价3
A 12 13 20
B 13 10 0
*/