有一张表 Tscore:
id 姓名 语文
1 张三 70
2 李四 80
3 王二麻子 90我做了一个视图,每次需要显示的是在这张表的最后加上一行,写上:
总计 240
总计和姓名对齐,240在语文列。
现在我用
select id,姓名,语文 from Tscore
union
select '','总计',sum(语文) from Tscore order by 语文一般是可以把总计这一行置底,但是遇到其他人成绩都是0分,只有一个人有成绩,那么这个总计就跑到当中去了,请问有什么办法吗?
id 姓名 语文
1 张三 70
2 李四 80
3 王二麻子 90我做了一个视图,每次需要显示的是在这张表的最后加上一行,写上:
总计 240
总计和姓名对齐,240在语文列。
现在我用
select id,姓名,语文 from Tscore
union
select '','总计',sum(语文) from Tscore order by 语文一般是可以把总计这一行置底,但是遇到其他人成绩都是0分,只有一个人有成绩,那么这个总计就跑到当中去了,请问有什么办法吗?
(select id,姓名,语文 from Tscore
union
select '','总计',sum(语文) from Tscore order by 语文 )
ORDER BY CASE 姓名 WHEN '总计' THEN 1 ELSE 0 END
union
select '','总计',sum(语文) from Tscore
order by
case when 姓名='总计' then 1 else 2 end,
语文
select id,姓名,语文 from Tscore
union
select '','总计',sum(语文) from Tscore
order by
case when 姓名='总计' then 2 else 1 end,
语文
/*---------------------------------
-- Author : htl258(Tony)
-- Date : 2009-09-13 22:07:27
-- Version: Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86)
Mar 29 2009 10:27:29
Copyright (c) 1988-2008 Microsoft Corporation
Enterprise Evaluation Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)---------------------------------*/
--> 生成测试数据表:TscoreIF NOT OBJECT_ID('[Tscore]') IS NULL
DROP TABLE [Tscore]
GO
CREATE TABLE [Tscore]([id] INT,[姓名] NVARCHAR(10),[语文] INT)
INSERT [Tscore]
SELECT 1,N'张三',0 UNION ALL
SELECT 2,N'李四',80 UNION ALL
SELECT 3,N'王五',0 UNION ALL
SELECT 4,N'王二麻子',0
GO
--SELECT * FROM [Tscore]-->SQL查询如下:
select id,姓名,语文 from Tscore
union
select '','总计',sum(语文) from Tscore order by 语文
/*
id 姓名 语文
----------- ---------- -----------
1 张三 0
3 王五 0
4 王二麻子 0
0 总计 80
2 李四 80
*/select id,姓名,语文,px=0 from Tscore
union all
select '','总计',sum(语文),px=1 from Tscore order by 语文,px
/*
id 姓名 语文 px
----------- ---------- ----------- -----------
1 张三 0 0
3 王五 0 0
4 王二麻子 0 0
2 李四 80 0
0 总计 80 1
*/
GO
CREATE TABLE Tscore(ID VARCHAR(20) ,姓名 VARCHAR(50),语文 INT)
INSERT INTO Tscore
SELECT 1,'张三', 70 UNION ALL
SELECT 2,'李四', 80 UNION ALL
SELECT 3,'王二麻子', 90 SELECT * FROM
(select id,姓名,语文 from Tscore
union
select '','总计',sum(语文) from Tscore ) T
ORDER BY CASE 姓名 WHEN '总计' THEN 1 ELSE 0 END/*
1 张三 70
2 李四 80
3 王二麻子 90
总计 240
*/
with rollup /cube
那就向12楼的MVP发帖提问..