例如:
A B
-----------
A1 B1
A1 B2
B2 BB21
B2 BB22
B21 BBB1
需要得到的结果是
A B
------------
A1 B1
A1 B2
A1 BB21
A1 BB22
A1 BBB1
B2 BB21
B2 BB22
B2 BBB1
B21 BBB1
A B
-----------
A1 B1
A1 B2
B2 BB21
B2 BB22
B21 BBB1
需要得到的结果是
A B
------------
A1 B1
A1 B2
A1 BB21
A1 BB22
A1 BBB1
B2 BB21
B2 BB22
B2 BBB1
B21 BBB1
解决方案 »
- 求获取sql2005的所有用户表的SQL语句
- 求一个 加权平均值 但是权值和数值不在一个表中的SQL语句 谢谢
- 我想取出某列中不为空字符串的数据..怎么弄
- DVD_01(OK_008 blog:wghao.cnblogs.com)请进
- 把一个嵌套的查询改成用联结的方法.搞不定了.:( 老师留的题目
- 求教SQL语句
- 求解:sqlserver2008采用MSIDXS 访问window7 索引服务获取不到数据
- 请教一个关于触发器的问题,怎么样往别的数据库插入数据
- 关于时间字符格式的相互转换问题:
- 在一个表中,如何对临时添加列中的数据进行非重复的列数据求和
- 怎样为每个职工授于只对他自己的记录有select权力(急,在线等)高手帮忙啊
- 求sql语句,高手进!
A B
-----------
A1 B1
A1 B2
B2 B21
B2 BB22
B21 BBB1
CREATE TABLE _t (A varchar(10), B varchar(10))
insert into _t select 'A1','B1'
UNION ALL SELECT 'A1','B2'
UNION ALL SELECT 'B2','B21'
UNION ALL SELECT 'B2','BB22'
UNION ALL SELECT 'B21','BBB1'
--函数
CREATE FUNCTION F_GET(@A VARCHAR(10))
RETURNS @T TABLE(A VARCHAR(10), B VARCHAR(10),LEVEL INT)
AS
BEGIN
WITH F_TABLE(A,B,LVL)
AS
(
SELECT A,B,0 FROM _T
WHERE A=@A
UNION ALL
SELECT A.A,A.B,B.LVL+1
FROM _T A,F_TABLE B WHERE A.A=B.B
)
INSERT INTO @T
SELECT * FROM F_TABLE
RETURN
END--查询
SELECT DISTINCT D.A,B.B FROM _t D
CROSS APPLY DBO.F_GET(D.A) B
--结果
/*
A B
---------- ----------
A1 B1
A1 B2
A1 B21
A1 BB22
A1 BBB1
B2 B21
B2 BB22
B2 BBB1
B21 BBB1(9 行受影响)*/
UNION
select P.A A, C.B B from Table P, Table C
where P.B = C.A
sql 应该怎么写?
谢谢