表结构如下
表1 是确定的,不会变化
A
1
2
3
4
5
6
表2会增加,但是C D的列值从表1 A中取例如
B C D
1 1 5
2 1 5
3 2 5
4 2 6
5 3 6
6 3 6我要得到如下的结果
A 5 6
1 1,2
2 3 4
3 5
4 6
说明 表1跟表2组合查询 只统计表1当 A 1 2 3 4 的值 表2的C值的与A中匹配,而D例与A中5 6匹配,
如当表1中A=1时 表2 C=1 取时D=5 打印出B值是1,2
谢谢.
表1 是确定的,不会变化
A
1
2
3
4
5
6
表2会增加,但是C D的列值从表1 A中取例如
B C D
1 1 5
2 1 5
3 2 5
4 2 6
5 3 6
6 3 6我要得到如下的结果
A 5 6
1 1,2
2 3 4
3 5
4 6
说明 表1跟表2组合查询 只统计表1当 A 1 2 3 4 的值 表2的C值的与A中匹配,而D例与A中5 6匹配,
如当表1中A=1时 表2 C=1 取时D=5 打印出B值是1,2
谢谢.
解决方案 »
- MYSQL到处数据库问题
- 哪位高手指点一下 在字符串中,我们应该怎样来产生一个回车并生成一个新行?
- 一个简单的二变一的SQL
- sql2000中except语法错误
- sql 2000 和sql 2005数据文件复制问题
- 问一句简单的sql语句!如何得到一个月内,某一字段的记录!知道的麻烦说一下吧!
- 菜鸟初学问题,两个数据库的表数据导出导入的问题!
- 请问如何用sql语句把windows的组作为sqlserver用户创建给某数据库然后把他添加到某个角色中去!
- 请各位帮助!在win2003的系统事件中不断报错,事件来源:MSSQLSERVER
- 如何清除回滚段的数据和事务
- SQL server 2005还原数据库失败
- 请教一个今天遇到的关于随机出试题的SQL语句
如表1
A
语文
数学
体育
美术
A不会增加固定的
表2
B C D
张一 语文 体育
张二 语文 体育
张三 数学 美术
张四 语文 美术
B例会增加 但是 C的值是 语文和数学 D的值是 体育和美术
要求得到如下的表
A 体育 美术
语文 张一,张二 张四
数学 张三做表A中前二个值和后二个值的交叉 ,谢谢.
if object_id('tempdb.dbo.#tb') is not null drop table #tb
create table #tb(B varchar(8), C varchar(8), D varchar(8))
insert into #tb
select '张一', '语文', '体育' union all
select '张二', '语文', '体育' union all
select '张三', '数学', '美术' union all
select '张四', '语文', '美术'-- query
;with comp as
(
select C, D, S = stuff((select ','+B from #tb where C=t.C and D=t.D for xml path('')),1,1,'') from #tb t group by C, D
)
select * from comp t pivot(max(S) for D in (体育,美术)) p
/*
C 体育 美术
-------- --------- ---------
数学 NULL 张三
语文 张一,张二 张四
*/