sql 使用心得

 使用的创建数据库脚本如下

 1 CREATE DATABASE [aa] 
 2 
 3 CREATE TABLE [dbo].[news](
 4     [gameTime] [nvarchar](50) NULL,
 5     [result] [nvarchar](10) NULL,
 6     [ID] [int] IDENTITY(1,1) NOT NULL,
 7  CONSTRAINT [PK_news] PRIMARY KEY CLUSTERED 
 8 (
 9     [ID] ASC
10 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
11 ) ON [PRIMARY]
12 
13 
14 INSERT [dbo].[news] ([gameTime], [result], [ID]) VALUES (N'2011-05-09', N'', 1)
15 INSERT [dbo].[news] ([gameTime], [result], [ID]) VALUES (N'2011-05-09', N'', 2)
16 INSERT [dbo].[news] ([gameTime], [result], [ID]) VALUES (N'2011-05-09', N'', 3)
17 INSERT [dbo].[news] ([gameTime], [result], [ID]) VALUES (N'2011-05-09', N'', 4)
18 INSERT [dbo].[news] ([gameTime], [result], [ID]) VALUES (N'2011-05-10', N'', 5)
19 INSERT [dbo].[news] ([gameTime], [result], [ID]) VALUES (N'2011-05-10', N'', 6)
20 INSERT [dbo].[news] ([gameTime], [result], [ID]) VALUES (N'2011-05-10', N'', 7)

1、用SQL查询一批数据,怎么在最后一行增加个数字合计                                                          

使用WITH ROLLUP 来统计数据,增加一行
SELECT  CASE  WHEN gameTime IS NULL THEN '合计'  ELSE  gameTime END AS gameTime,               -------如果为NULL   则显示合计
sum(CASE WHEN result='胜'THEN 1 ELSE 0 end ) AS 胜,                                         -------统计胜的数量

sum(CASE WHEN result='负' THEN 1  ELSE 0 end)AS 负

 FROM dbo.news

GROUP BY  gameTime  WITH ROLLUP

 使用union all 来统计数据,增加一行

SELECT  gameTime,
sum(CASE WHEN result='胜'THEN 1 ELSE 0 end ) AS 胜,
sum(CASE WHEN result='负' THEN 1  ELSE 0 end)AS 负
 FROM dbo.news   
GROUP BY  gameTime 

UNION ALL                                       ---------合并数据

SELECT '合计',sum(胜),sum(负)
FROM 

(SELECT  gametime,
sum(CASE WHEN result='胜'THEN 1 ELSE 0 end ) AS 胜,
sum(CASE WHEN result='负' THEN 1  ELSE 0 end)AS 负
 FROM dbo.news
GROUP BY gameTime) AS cc

 

  

 

 

 

posted @ 2014-10-12 09:20  落日云烟  阅读(217)  评论(0编辑  收藏  举报