读书人

汇总新有关问题

发布时间: 2012-02-07 17:45:36 作者: rapoo

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

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

这个已经解决了,能够取出三个单价
但是显示的时候,需要把数据横向显示为一行
物料 单价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
A121320
B13100
*/

读书人网 >SQL Server

热点推荐