数据交叉统计难题

songguozhi 2011-02-15 02:48:04
如下的问题,如何才能快速的将数据插入到@stat表变量中,请高手支招?
DECLARE @TempCall TABLE(
RecDate BIGINT NOT NULL,
学校 VARCHAR(20),--学校
年级 VARCHAR(20),--年级
班级 VARCHAR(20),--班级
上课人数 INT NULL,
迟到人数 INT NOT NULL,
病假人数 INT NOT NULL)

INSERT INTO @TempCall(RecDate, 学校, 年级, 班级, 上课人数, 迟到人数, 病假人数)
SELECT 20110215, '第一中学', '', '', 190, 4, 0 UNION ALL
SELECT 20110215, '第一中学', '八年级', '', 150, 3, 0 UNION ALL
SELECT 20110215, '第一中学', '八年级', '一班', 25, 1, 1

DECLARE @stat TABLE(
RecDate BIGINT NOT NULL,
统计对象 INT,--1:学校 2:年级 3:班级
统计内容 INT,--1:上课人数, 2:迟到人数, 3:病假人数
Less5 INT,--如统计对象为学校、统计内容为上课人数,即该字段表示上课人数少于5人的学校有多少个
Less20 INT,
Less30 INT,
Less40 INT,
Less50 INT)
/*
其中:如 20110215, '第一中学', '八年级', '一班', 25, 1, 1 该记录 需要在统计学校、年级、班级时分别都需要统计
*/




...全文
112 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
快溜 2011-02-15
  • 打赏
  • 举报
回复
用笔算。
freetd 2011-02-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dawugui 的回复:]

没看懂,帮顶.
[/Quote]
up
SQL77 2011-02-15
  • 打赏
  • 举报
回复
DECLARE @TempCall TABLE(
RecDate BIGINT NOT NULL,
学校 VARCHAR(20),--学校
年级 VARCHAR(20),--年级
班级 VARCHAR(20),--班级
上课人数 INT NULL,
迟到人数 INT NOT NULL,
病假人数 INT NOT NULL)

INSERT INTO @TempCall(RecDate, 学校, 年级, 班级, 上课人数, 迟到人数, 病假人数)
SELECT 20110215, '第一中学', '', '', 190, 4, 0 UNION ALL
SELECT 20110215, '第一中学', '八年级', '', 150, 3, 0 UNION ALL
SELECT 20110215, '第一中学', '八年级', '一班', 25, 1, 1

--列转行

select RecDate,'学校'AS 统计对象,学校,'上课人数' AS 统计内容,上课人数 AS 人数 FROM @TempCall
UNION ALL
select RecDate,'学校'AS 统计对象,学校,'迟到人数' AS 统计内容,迟到人数 FROM @TempCall
UNION ALL
select RecDate,'学校'AS 统计对象,学校,'病假人数' AS 统计内容,病假人数 FROM @TempCall
UNION ALL


select RecDate,'年级'AS 统计对象,年级,'上课人数' AS 统计内容,上课人数 FROM @TempCall
UNION ALL
select RecDate,'年级'AS 统计对象,年级,'迟到人数' AS 统计内容,迟到人数 FROM @TempCall
UNION ALL
select RecDate,'年级'AS 统计对象,年级,'病假人数' AS 统计内容,病假人数 FROM @TempCall
UNION ALL

select RecDate,'班级'AS 统计对象,班级,'上课人数' AS 统计内容,上课人数 FROM @TempCall
UNION ALL
select RecDate,'班级'AS 统计对象,班级,'迟到人数' AS 统计内容,迟到人数 FROM @TempCall
UNION ALL
select RecDate,'班级'AS 统计对象,班级,'病假人数' AS 统计内容,病假人数 FROM @TempCall

--再行转列SUM(CASE WHEN 人数<=5 THEN ..........


意思不明白,不懂帮顶
songguozhi 2011-02-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sql77 的回复:]

那表设计得,上课人数, 迟到人数, 病假人数,要是这再多几个原因,又得多几个列了,

结果是啥?
[/Quote]
只是最终统计出来的统计内容中多了些,统计结果的表结构不得变的
表已经这样了,不能改,只能遵守
SQL77 2011-02-15
  • 打赏
  • 举报
回复
那表设计得,上课人数, 迟到人数, 病假人数,要是这再多几个原因,又得多几个列了,

结果是啥?

22,199

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧