怎么行转列进行行转列啊 大神看过来

求SQL2000 行转列代码解决方法 - Sql Server当前位置:& &&&求SQL2000 行转列代码解决方法求SQL2000 行转列代码解决方法&&网友分享于:&&浏览:2次求SQL2000 行转列代码数据表格式:
ID&&凭据编号&&&&&&登记日期&&&&&&&联系人&&联系电话&&&所属部门&&备注
1&&&&&&&&&张三&&&&&110&&&&&&&销售部
2&&&&&&&&&李斯&&&&&&110&&&&&&销售部
3&&&&&&&&&王五&&&&&&119&&&&&&开发部
4&&&&&&&&&赵六&&&&&&&&&&&&&&行政部
要把数据生成如下格式
销售部五月的数据(查询销售部)查询出属于销售部的登记数量,跟进月(day)进行统计
日期&&&1&2&3&4&5&6&7&8&9&10&11&....&31&合计
数据&&&0&2&0&0&0&0&0&0&0&0&0&0&....&0&&2
查询需求:查询依据指定部门,指定月份,查询出指定月每天的登记量,如果没有显示0,最后还有个合计是当月的登记量,请问这个sql该怎么写。数据库是SQL2000.
请教各位大侠,可以达到这个效果吗?
------解决方案--------------------if&OBJECT_ID('tempdb..#temp',&'u')&is&not&null&&&drop&table&#
create&table&#temp(&[ID]&int,&[凭据编号]&varchar(100),&[登记日期]&DATETIME,&[联系人]&varchar(100),&[联系电话]&varchar(100),&[所属部门]&varchar(100));
insert&#temp
select&'1','','','张三','110','销售部'&union&all
select&'2','','','李斯','110','销售部'&union&all
select&'3','','','王五','119','开发部'&union&all
select&'4','','','赵六',null,'行政部'&
DECLARE&@department&NVARCHAR(100),&@month&CHAR(6),&@sql&NVARCHAR(MAX),&@collist&NVARCHAR(MAX)
SELECT&@department&=&N'销售部',&@month&=&'201305'
SET&@collist&=&''
SELECT&@collist&=&@collist&+&QUOTENAME(number+1)+'&=&SUM(CASE&DAY(AllMonthDay)&WHEN&'+&LTRIM(number+1)&+'&THEN&CNT&END),'&& 共&3&页:
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有请教sql大神,固定行转列,列转行,有图,急!_sql吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:37,904贴子:
请教sql大神,固定行转列,列转行,有图,急!收藏
一行数据,怎么转成这3行啊,不要分表做,最好直接用sql弄出来 ,还要转一行加一个id1,第二行id2,第三行id3
来达内学sql,先培训,就业后付款,0首付,0基础入学,想学数据库就来达内!达内数据库培训,总监级讲师授课,自助研发TTS教学系统,120入门到精通
select ROW_NUMBER()over(partition by id order by Coalesce(breakfast3,breakfast2,breakfast1)),id,Coalesce(breakfast3,breakfast2,breakfast1) as breakfast,Coalesce(chinese3,chinese2,chinese1) as chinese,Coalesce(dinner3,dinner2,dinner1) as dinner,datefrom 表group by id,date,breakfast1,chinese1,dinner1,breakfast2,chinese2,dinner2,breakfast3,chinese3,dinner3 WITH ROLLUP
having GROUPING(id) +GROUPING(breakfast1)+GROUPING(chinese1)+GROUPING(dinner1)+GROUPING(date)=0 and GROUPING(id) +GROUPING(breakfast2)+GROUPING(chinese2)+GROUPING(dinner2) +GROUPING(breakfast3)+GROUPING(chinese3)+GROUPING(dinner3)=6or GROUPING(id) +GROUPING(breakfast2)+GROUPING(chinese2)+GROUPING(dinner2)+GROUPING(date)=0 and GROUPING(id) +GROUPING(breakfast1)+GROUPING(chinese1)+GROUPING(dinner1)+GROUPING(breakfast3)+GROUPING(chinese3)+GROUPING(dinner3)=3or GROUPING(id) +GROUPING(breakfast3)+GROUPING(chinese3)+GROUPING(dinner3)+GROUPING(date)=0 and GROUPING(id) +GROUPING(breakfast1)+GROUPING(chinese1)+GROUPING(dinner1)+GROUPING(breakfast2)+GROUPING(chinese2)+GROUPING(dinner2)=0order by Coalesce(breakfast3,breakfast2,breakfast1)
select * from(select id,date,cast(name1 as Int) as name1,LEFT(name2,1) as name3 ,RIGHT(name2,1) as name4
from (select * from #123unpivot(name1 for name2 in (breakfast1,chinese1,dinner1,breakfast2,chinese2,dinner2,breakfast3,chinese3,dinner3) )a ) a) apivot(sum(name1) for name3 in (breakfast,chinese,dinner))b
登录百度帐号推荐应用今天碰到一个排序的有关问题,求大神指点。 - Sql Server当前位置:& &&&今天碰到一个排序的有关问题,求大神指点。今天碰到一个排序的有关问题,求大神指点。&&网友分享于:&&浏览:3次今天碰到一个排序的问题,求大神指点。。。学生表结构如下:
CREATE&TABLE&[dbo].[studentInfo](
[id]&[int]&IDENTITY(1,1)&NOT&NULL,
[subject]&[varchar](50)&NOT&NULL,
[studentID]&[int]&NOT&NULL,
[isPass]&[int]&NOT&NULL,
[teacherID]&[int]&NOT&NULL)
老师信息表结构如下:
CREATE&TABLE&[dbo].[teacherInfo](
[id]&[int]&IDENTITY(1,1)&NOT&NULL,
[teacherID]&[int]&NOT&NULL,
[Age]&[int]&NOT&NULL,
[sex]&[int]&NOT&NULL)
现在有两个老师数据:
insert&into&teacherInfo(teacherid,age,sex)&values(3,50,0)
insert&into&teacherInfo(teacherid,age,sex)&values(15,35,0)
有关于两个学生的6条数据:
insert&into&studentInfo(subject,studentid,ispass,teacherid)&values('语文',1,0,3)
insert&into&studentInfo(subject,studentid,ispass,teacherid)&values('数学',1,0,3)
insert&into&studentInfo(subject,studentid,ispass,teacherid)&values('英语',1,0,3)
insert&into&studentInfo(subject,studentid,ispass,teacherid)&values('语文',2,1,15)
insert&into&studentInfo(subject,studentid,ispass,teacherid)&values('数学',2,1,15)
insert&into&studentInfo(subject,studentid,ispass,teacherid)&values('英语',2,1,15)
假设现在是对老师的教学能力进行评价,标准是看他所教的学生3科通过的个数,如果通过个数相同(比如都有没通过的),那就按老师年龄就行排序,最后我想把两个人的排序输出出来。。。。-&-,我一开始是按下面的方法来的,
with&ranking(teachid,ranknum)
select&s.teacherid,row_number()&over(order&by&count(*)&desc,sum(t.age)&desc)&from&studentinfo&s&left&join&teacherinfo&t&on&s.teacherid=t.teacherid&where&s.ispass=1&group&by&s.teacherid
select&*&from&ranking
可是这个方法会有一个问题,就是当一个老师的学生都通过,另一个老师的学生都没通过的时候,会有一个老师选不出来,即只有一条数据。。。
说的有点啰嗦,额。。求解答-.&-
------解决方案--------------------;WITH&&ranking&(&teachid,&ranknum&)
s.teacherid&,
ROW_NUMBER()&OVER&(&ORDER&BY&SUM(ispass)&DESC,&MAX(t.age)&DESC&)&--isPass相加(这是关键点),年龄取原始年龄更形象(虽然效果一样) 共&2&页:
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有求会sql server 2008的大神帮帮忙,怎么行转列【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:635,305贴子:
求会sql server 2008的大神帮帮忙,怎么行转列收藏
2017java学习来上市公司博为峰学java,入学即签就业协议,不就业不收费,查看java课程!java好学吗?java课程来博为峰学,java工程师就业年薪十几万!
难受,为什么就没有人帮帮忙
可以是用pivot来进行行转列,也可以用case语句写
登录百度帐号推荐应用

我要回帖

更多关于 oracle怎么行转列 的文章

 

随机推荐