T-sql 行转列,数据库查询分页

Posted 于继海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了T-sql 行转列,数据库查询分页相关的知识,希望对你有一定的参考价值。

技术分享
 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 行转列,数据库查询分页的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL 实现行转列

T-Sql语法:行转列(pivot)和列转行(unpivot)

行转列-列转行_查询

mysql行转列的问题,但是否并接?

postgresql行转列

【求助】有关oracle 动态行转列