积极答复者
sql 数据列表底部的统计信息,怎么做

问题
答案
-
您好,
您可以使用CTE做好分頁之後再加入union來將分頁的總合加進去,如下,USE tempdb GO --drop table #t1; CREATE TABLE #t1 ( [Id] INT ,[票] NVARCHAR(20) ,[全價] MONEY ,[票面總價] MONEY , [優惠後總價] MONEY ); DELETE FROM #t1; INSERT INTO #t1 VALUES(1,'票1', 2250, 2250, 2183); INSERT INTO #t1 VALUES(2,'票2', 1100, 1100, 1100); INSERT INTO #t1 VALUES(3,'票3', 1590, 1600, 1600); INSERT INTO #t1 VALUES(4,'票4', 980, 830, 830); INSERT INTO #t1 VALUES(5,'票5', 1540, 620, 596); INSERT INTO #t1 VALUES(6,'票6', 600, 600, 566); INSERT INTO #t1 VALUES(7,'票7', 700, 700, 677); INSERT INTO #t1 VALUES(8,'票8', 800, 800, 788); INSERT INTO #t1 VALUES(9,'票9', 900, 900, 899); INSERT INTO #t1 VALUES(10,'票10', 1000, 1000, 910); DECLARE @PageNumber INT DECLARE @PageSize INT -- Assume we need page 1 i.e. records from 1-5 SELECT @PageNumber = 1 SELECT @PageSize = 5 ;WITH CTEPageing AS ( SELECT * FROM ( SELECT RowId = ROW_NUMBER() OVER ( ORDER BY [Id] ) , *, 0 AS SortOrder FROM #t1 ) A WHERE A.RowId > ( ( @PageNumber - 1 ) * @PageSize ) AND A.RowId <= ( ( @PageNumber ) * @PageSize ) ) SELECT * FROM CTEPageing UNION ALL SELECT -1 AS RowId, -1 AS Id, N'合計', SUM([全價]), SUM([票面總價]), SUM([優惠後總價]), 1 FROM CTEPageing ORDER BY SortOrder
請您再依需求調整吧!
- 已标记为答案 Lisa Zhang - MSFTModerator 2013年9月24日 9:11
全部回复
-
就算十页的总合计也是使用
DECLARE @a INT SELECT @a=第一页全价+第二页全价+第三页全价+。。。。 SELECT @a DECLARE @a INT SELECT @a=第一页票面总价+第二页票面总价+第三页票面总价+。。。。 SELECT @a DECLARE @a INT SELECT @a=第一页优惠后总价+第二页优惠后总价+第三页优惠后总价+。。。。 SELECT @a
不过我觉得LZ这个问题应该属于程序逻辑,不属于SQLSERVER逻辑
LZ可以到C#板块提问的
ASP.NET与AJAX
http://social.msdn.microsoft.com/Forums/zh-CN/home?forum=295
C#
http://social.msdn.microsoft.com/Forums/zh-CN/home?forum=visualcshartzhchs
-
您好,
您可以使用CTE做好分頁之後再加入union來將分頁的總合加進去,如下,USE tempdb GO --drop table #t1; CREATE TABLE #t1 ( [Id] INT ,[票] NVARCHAR(20) ,[全價] MONEY ,[票面總價] MONEY , [優惠後總價] MONEY ); DELETE FROM #t1; INSERT INTO #t1 VALUES(1,'票1', 2250, 2250, 2183); INSERT INTO #t1 VALUES(2,'票2', 1100, 1100, 1100); INSERT INTO #t1 VALUES(3,'票3', 1590, 1600, 1600); INSERT INTO #t1 VALUES(4,'票4', 980, 830, 830); INSERT INTO #t1 VALUES(5,'票5', 1540, 620, 596); INSERT INTO #t1 VALUES(6,'票6', 600, 600, 566); INSERT INTO #t1 VALUES(7,'票7', 700, 700, 677); INSERT INTO #t1 VALUES(8,'票8', 800, 800, 788); INSERT INTO #t1 VALUES(9,'票9', 900, 900, 899); INSERT INTO #t1 VALUES(10,'票10', 1000, 1000, 910); DECLARE @PageNumber INT DECLARE @PageSize INT -- Assume we need page 1 i.e. records from 1-5 SELECT @PageNumber = 1 SELECT @PageSize = 5 ;WITH CTEPageing AS ( SELECT * FROM ( SELECT RowId = ROW_NUMBER() OVER ( ORDER BY [Id] ) , *, 0 AS SortOrder FROM #t1 ) A WHERE A.RowId > ( ( @PageNumber - 1 ) * @PageSize ) AND A.RowId <= ( ( @PageNumber ) * @PageSize ) ) SELECT * FROM CTEPageing UNION ALL SELECT -1 AS RowId, -1 AS Id, N'合計', SUM([全價]), SUM([票面總價]), SUM([優惠後總價]), 1 FROM CTEPageing ORDER BY SortOrder
請您再依需求調整吧!
- 已标记为答案 Lisa Zhang - MSFTModerator 2013年9月24日 9:11