请教这个语句怎么实现

hqbj08 2010-09-09 04:57:37
有两个标如下:

MID M_c Syear
1 ABC 2008
2 AAC 2008

ID MID M_Module M_Value
1 1 A 15
2 1 B 2
3 1 C 3
4 1 D 1
5 2 A 24
6 2 B 1
7 2 C 32
8 2 D 41

导出如下:
MID M_c Syear A B C D
1 ABC 2008 15 2 3 1
2 AAC 2008 24 1 32 41

请帮忙看一下,谢谢!
...全文
155 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hqbj08 2010-09-09
  • 打赏
  • 举报
回复
谢谢大家,给分
jamk 2010-09-09
  • 打赏
  • 举报
回复

楼上正解,不过少了行Syear 呵呵
Mark杨 2010-09-09
  • 打赏
  • 举报
回复

declare @ta table(MID int,M_c varchar(10),Syear varchar(10))
insert @ta
select 1,'ABC','2008' union all
select 2,'AAC','2008'

declare @tb table(ID int,MID int,M_Module varchar(10),M_Value varchar(10))
insert @tb
select 1,1,'A','15' union all
select 2,1,'B','2' union all
select 3,1,'C','3' union all
select 4,1,'D','1' union all
select 5,2,'A','24' union all
select 6,2,'B','1' union all
select 7,2,'C','32' union all
select 8,2,'D','41'

select a.mid,a.m_c,
A = sum(case when b.m_module ='A' then m_value else 0 end),
B = sum(case when b.m_module ='B' then m_value else 0 end),
C = sum(case when b.m_module ='C' then m_value else 0 end),
D = sum(case when b.m_module ='D' then m_value else 0 end)
from @ta a join @tb b
on a.mid = b.mid
group by a.mid ,a.m_c order by a.mid

/*
mid m_c A B C D
----------- ---------- ----------- ----------- ----------- -----------
1 ABC 15 2 3 1
2 AAC 24 1 32 41

(所影响的行数为 2 行)
*/
GUOCHENGJUN 2010-09-09
  • 打赏
  • 举报
回复
select a.MID ,b.m_c,b.syear
max(case a.M_Module when 'A' then a.M_Value else 0 end) A,
max(case a.M_Module when 'B' then a.M_Value else 0 end) B,
max(case a.M_Module when 'C' then a.M_Value else 0 end) C,
max(case a.M_Module when 'D' then a.M_Value else 0 end) D
from tb a INNER JOION tb1 b
on a.MID=b.Mid
group by a.MID ,b.m_c,b.syear
GUOCHENGJUN 2010-09-09
  • 打赏
  • 举报
回复
select a.MID ,b.syear
max(case a.M_Module when 'A' then a.M_Value else 0 end) A,
max(case a.M_Module when 'B' then a.M_Value else 0 end) B,
max(case a.M_Module when 'C' then a.M_Value else 0 end) C,
max(case a.M_Module when 'D' then a.M_Value else 0 end) D
from tb a INNER JOION tb1 b
on a.MID=b.Mid
group by a.MID,b.syear
hao1hao2hao3 2010-09-09
  • 打赏
  • 举报
回复


列固定(ABCD四列)就用下面的
select a.mid,a.m_c,
sum(case when b.m_module ='A' then m_value else 0 end) as A,
sum(case when b.m_module ='B' then m_value else 0 end) as B,
sum(case when b.m_module ='C' then m_value else 0 end) as C,
sum(case when b.m_module ='D' then m_value else 0 end) as D
from a join b
on a.mid = b.mid
group by a.mid ,a.m_c

不固定就用动态SQL

浑沌滴年代 2010-09-09
  • 打赏
  • 举报
回复
行转列,用透视
GUOCHENGJUN 2010-09-09
  • 打赏
  • 举报
回复
create table tb(id int,MID int , M_Module varchar(10) , M_Value int)
insert into tb values(1 ,1,'A' , 15)
insert into tb values(2 ,1,'B' , 2)
insert into tb values(3 ,1,'C' , 3)
insert into tb values(4 ,1,'D' , 1)
insert into tb values(5 ,2,'A' , 24)
insert into tb values(6 ,2,'B' , 1)
insert into tb values(7 ,2,'C' , 32)
insert into tb values(8 ,2,'D' , 41)

select MID ,
max(case M_Module when 'A' then M_Value else 0 end) A,
max(case M_Module when 'B' then M_Value else 0 end) B,
max(case M_Module when 'C' then M_Value else 0 end) C,
max(case M_Module when 'D' then M_Value else 0 end) CD
from tb
group by MID
飘零一叶 2010-09-09
  • 打赏
  • 举报
回复

IF(OBJECT_ID('Student') IS NOT NULL)
DROP TABLE Student
CREATE TABLE Student
(
ID INT IDENTITY(1,1) PRIMARY KEY,
Name VARCHAR(10)
)
INSERT Student
SELECT '张三' UNION
SELECT '李四' UNION
SELECT '王五'
IF(OBJECT_ID('Grade') IS NOT null)
DROP TABLE Grade
CREATE TABLE Grade
(
SID INT , --对应着 student 中的ID
SUBJECT VARCHAR(50),
VALUE INT,
order_index INT , --在行上的顺寻
flag int --是否显示
)
INSERT grade VALUES(1,'English',66,1,1)
INSERT grade VALUES(1,'Chinese',67,2,1)
INSERT grade VALUES(1,'Math',68,3,1)
INSERT grade VALUES(2,'English',63,1,1)
INSERT grade VALUES(2,'Chinese',64,2,1)
INSERT grade VALUES(2,'Math',65,3,1)
INSERT grade VALUES(2,'Franch',65,4,1)
SELECT * FROM Student s
SELECT * FROM Grade

DECLARE @S NVARCHAR(MAX)
SET @S='SELECT S.ID,S.NAME'
SELECT @S=@S+',MAX(CASE WHEN SUBJECT='''+SUBJECT+''' THEN VALUE ELSE 0 END)'+SUBJECT FROM Grade WHERE FLAG='1' GROUP BY SUBJECT,order_index ORDER BY order_index
SET @S=@S+' FROM STUDENT S LEFT JOIN GRADE G ON S.ID=G.SID GROUP BY S.ID,S.NAME'
EXEC (@S)

--使用PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来转换表值表达式,并在必要时对最终输出中所需的任何其余的列值执行聚合
DECLARE @P NVARCHAR(MAX)
set @P=''
SELECT @P=@P+',['+ SUBJECT+']' FROM Grade WHERE flag='1' GROUP BY SUBJECT,order_index ORDER BY order_index
SET @P=SUBSTRING(@P,2,LEN(@P))
EXEC ('SELECT ID,NAME,'+@P+' from (Select s.id,s.name,g.SUBJECT,g.value from Student s left join Grade g on s.id=g.sid) x
pivot(sum(value) for subject in('+@P+')) c')

参考一下
huzhaoloving 2010-09-09
  • 打赏
  • 举报
回复
不好意思。。看不懂
源码下载地址: https://pan.quark.cn/s/8d2c461c797c JavaWeb程序设计构成了掌握Web交互式应用程序开发的核心领域,对于初学者来说,精通这一技术具有决定性意义。在“JavaWeb程序设计(第三版)作业答案”中,我们可以预期获得针对该教材习题的一系列深入解析,从而协助学习者强化知识体系。 JavaWeb所包含的技术组件涵盖了Servlet、JSP(JavaServer Pages)、JDBC(Java Database Connectivity)以及各类框架如Spring MVC、Struts等。Servlet是Java平台提供的一种扩展服务器功能的接口,能够处理HTTP请求并生成相应的反馈。JSP则是一种用于构建动态网页的工具,它支持开发者将HTML代码与Java代码进行整合编写,从而简化了Web应用程序的开发流程。 作业答案通常会涉及以下几个核心内容: 1. **Servlet基础**:可能包含Servlet生命周期、init(), service(), destroy()方法的应用,以及如何在web.xml文件中设定Servlet的映射关系。 2. **JSP基础**:JSP的九大内置对象,如request、response、session、application等的使用,以及EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)的实际操作。 3. **HTTP协议理解**:GET和POST请求方法的差异,请求头与响应头的应用,以及会话管理的概念阐释。 4. **JDBC数据库操作**:与数据库建立连接,执行SQL指令,处理查询结果集,以及...
源码链接: https://pan.quark.cn/s/a4b39357ea24 斐讯K2是一款广受用户青睐的无线路由器,其运行表现稳定且具备较高的可操作性,在DIY爱好者群体中拥有极高的声誉。本资料将系统性地阐述斐讯K2的固件刷机方法及其关联的技术要点。固件升级是路由器爱好者改善设备性能、扩展功能的一种普遍手段,经由替换出厂固件,能够达成更加个性化的网络配置、增强安全防护等目标。斐讯K2固件资源库涵盖了多种知名的非官方固件,诸如Tomato Pheonix 不死鸟、高恪、PandoraBox 潘多拉等,这些固件均具备独特的优势,能够适配不同用户的需求。 1. Tomato Pheonix 不死鸟:Tomato是一款立足于Linux的开源固件,以其精巧、高效而备受推崇。不死鸟版本是专门为华硕及斐讯路由器优化的分支,提供了卓越的QoS(服务质量)配置、详尽的图表监控以及便捷的固件升级途径。对于那些需要精准调控带宽和监测网络状态的用户而言,这是一个理想的选项。 2. 高恪:高恪固件是OpenWrt的定制化版本,着重于操作的便捷性和运行的可靠性,特别适合对路由器操作不甚熟悉的用户群体。它提供了一些实用的功能,例如内置的广告屏蔽、快速测速工具等,同时保留了OpenWrt的适应性。 3. PandoraBox 潘多拉:潘多拉盒是另一款基于OpenWrt的固件,它以丰富的插件库和强大的自定义潜力而闻名。用户能够依据个人需求安装各类插件,实现更多功能,如远程接入、DDNS(动态域名解析服务)等。 4. 官方固件的纯净版本与定制版本:官方固件通常更侧重于稳定性,纯净版意味着未预置额外的应用或服务,适合注重稳定性的用户。定制版则可能包含了制造商的特色功能或优...

34,876

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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