34,588
社区成员
发帖
与我相关
我的任务
分享
USE [DATA]
GO
/****** Object: StoredProcedure [dbo].[P] Script Date: 11/21/2011 19:36:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <From CSDN>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[P]
--(@dalei [nvarchar](50),@riqi [int],@nian [int],@bizhong [NVARCHAR](50))
(@dalei [nvarchar](50),@riqi [int],@nian [int])
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
--USE [DATA]
--/****** Object: StoredProcedure [dbo].[P] Script Date: 11/20/2011 21:01:25 ******/
SET ANSI_NULLS ON
--GO
SET QUOTED_IDENTIFIER ON
--GO
if not object_id('Tempdb..#T') is null
drop table #T
Create table #T([bupinlistid] int,[bupinmingcheng] nvarchar(50) ,[bupinfanhao] nvarchar(50) ,[danjia] decimal(18,6),[danjiarmb] decimal(18,6),[danjiausd] decimal(18,6),[shuliang] int,[date] Datetime)
Insert into #T(bupinlistid,bupinmingcheng,bupinfanhao,danjia,danjiarmb,danjiausd,shuliang ,date) select b.bupinlistid,b.bupinmingcheng,b.bupinfanhao,c.danjiarb,c.danjiarmb,c.danjiausd,a.shuliang ,a.date from bupin as a right join bupinlist as b on a.bupinlistid=b.bupinlistid and month(a.date)= @riqi and YEAR(a.date) = @nian left join bupinbase as c on a.bupinlistid = c.bupinlistid where b.dalei = @dalei order by b.bupinlistid
--SQL2005
declare @t nvarchar(MAX)
Select @t=isnull(@t+',','')+quotename(CONVERT(varchar(10),Date,120)) from #T group by date --isnull(@s+',','') 去掉字符串@s中第一个逗号
exec('select [bupinlistid] as 序号,[bupinmingcheng] as 部品名称,[bupinfanhao] as 部品番号,convert(decimal(18,2),isnull([danjia],0)) as [日币单价],[danjiarmb] as 人民币单价,[danjiausd] as 美元单价,'+@t+',isnull([zongshu],0) as 总数 from (select *,[zongshu]=sum([shuliang]) over (partition by [bupinlistid]) from #T ) a pivot (sum([shuliang]) for [date] in('+@t+') )b ')
END
exec('Insert into #T(bupinlistid,bupinmingcheng,bupinfanhao,danjia,danjiarmb,danjiausd,shuliang ,date) select b.bupinlistid,b.bupinmingcheng,b.bupinfanhao,c.'+@danjia+'rb,c.'+@danjia+'rmb,c.'+@danjia+'usd,a.shuliang ,a.date from bupin as a right join bupinlist as b on a.bupinlistid=b.bupinlistid and month(a.date)= @riqi and YEAR(a.date) = @nian left join bupinbase as c on a.bupinlistid = c.bupinlistid where b.dalei = @dalei order by b.bupinlistid')
Insert into #T(bupinlistid,bupinmingcheng,bupinfanhao,danjia,danjiarmb,danjiausd,shuliang ,date)
EXEC('select b.bupinlistid,b.bupinmingcheng,b.bupinfanhao,'+@danjia+',c.danjiarmb,c.danjiausd,a.shuliang ,a.date
from bupin as a
right join bupinlist as b on a.bupinlistid=b.bupinlistid and month(a.date)= @riqi and YEAR(a.date) = @nian l
eft join bupinbase as c on a.bupinlistid = c.bupinlistid where b.dalei = @dalei
order by b.bupinlistid')