1. 程式人生 > >T-sql 行轉列,數據庫查詢分頁

T-sql 行轉列,數據庫查詢分頁

tput substr between dep and alt rom img lec

技術分享
 1 USE [APS_Future_FT]
 2 GO
 3 /****** Object:  StoredProcedure [dbo].[A_CrudePrice]    Script Date: 2013/11/5 19:13:21 ******/
 4 SET ANSI_NULLS ON
 5 GO
 6 SET QUOTED_IDENTIFIER ON
 7 GO
 8 -- =============================================
 9 -- Author:        <Author,,Name>
10 -- Create date: <Create Date,,>
11 -- Description:    <Description,,>
12 -- =============================================
13 ALTER PROCEDURE [dbo].[A_CrudePrice]
14 (
15       @BeginDate DATETIME ,
16       @EndDate DATETIME,
17       @PageSize INT,
18       @PageIndex INT,
19       @TotalCount INT OUTPUT
20 )
21 AS
22 BEGIN
23     -- SET NOCOUNT ON added to prevent extra result sets from
24     -- interfering with SELECT statements.
25     SET NOCOUNT ON;
26 
27     DECLARE @CodeList NVARCHAR(max)
28     DECLARE @str NVARCHAR(max)
29     SET @CodeList =( SELECT DISTINCT ‘[‘+ iscp.CrudeStandard+‘],‘
30                        FROM dbo.T_H_InternalStandardCrudePrice iscp
31                        FOR XML PATH(‘‘)
32                     )
33     SET @CodeList = SUBSTRING(@CodeList,1,LEN(@CodeList)-1)
34     PRINT @CodeList
35 
36             SELECT iscp.PriceDate,iscp.CrudeStandard,iscp.CrudeStandardPrice
37             INTO #A
38             FROM dbo.T_H_InternalStandardCrudePrice iscp
39             WHERE iscp.PriceDate BETWEEN @BeginDate AND @EndDate
40 
41 
42 SET @str = ‘
43     SELECT Row=row_number() over(order by PriceDate desc), PriceDate,[email protected]
/* */+‘ 44 FROM ( 45 select * from #A 46 )AS A 47 PIVOT ( sum(A.CrudeStandardPrice) FOR A.CrudeStandard IN ([email protected]+‘ ) 48 )AS B‘ 49 SET @str =‘ SELECT * INTO ##A 50 FROM ([email protected]+‘) as C‘ 51 52 EXEC(@str) 53 54 SELECT * 55 FROM ##A AS tempA 56 WHERE tempA.Row BETWEEN @PageSize * @PageIndex AND @PageSize *(@PageIndex + 1) 57 58 SELECT @TotalCount =( SELECT COUNT(*) 59 FROM ##A 60 ) 61 DROP TABLE #A 62 DROP TABLE ##A 63 64 END

技術分享

T-sql 行轉列,數據庫查詢分頁