表
ID P V
1 1 b
2 1 c
3 2 d
4 3 x
5 3 y
6 3 zP=1 对应 V有b,c
P=2 对应 V有d
P=3 对应 V有x,y,z根据P的不同对应 V的值组合起来
想要的结果为 列1 列2 列3
b d x
b d y
b d z
c d x
c d y
c d z
ID P V
1 1 b
2 1 c
3 2 d
4 3 x
5 3 y
6 3 zP=1 对应 V有b,c
P=2 对应 V有d
P=3 对应 V有x,y,z根据P的不同对应 V的值组合起来
想要的结果为 列1 列2 列3
b d x
b d y
b d z
c d x
c d y
c d z
select m.v , n.v , t.v
from tb m , tb n , tb v
where m.p = 1 and n.p = 2 and v.p = 3
insert into tb values(1, 1 ,'b')
insert into tb values(2, 1 ,'c')
insert into tb values(3, 2 ,'d')
insert into tb values(4, 3 ,'x')
insert into tb values(5, 3 ,'y')
insert into tb values(6, 3 ,'z')
goselect m.v , n.v , t.v
from tb m , tb n , tb t
where m.p = 1 and n.p = 2 and t.p = 3drop table tb/*
v v v
---------- ---------- ----------
b d x
b d y
b d z
c d x
c d y
c d z(所影响的行数为 6 行)
*/
from tb m , tb n , tb t
where m.p = 1 and n.p = 2 and t.p = 3
--> 数据库版本:
--> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
--> 测试数据:[TB]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]')
AND type in (N'U'))
DROP TABLE [TB]
GO---->建表
create table [TB]([ID] int,[P] int,[V] varchar(1))
insert [TB]
select 1,1,'b' union all
select 2,1,'c' union all
select 3,2,'d' union all
select 4,3,'x' union all
select 5,3,'y' union all
select 6,3,'z'
GO--> 查询结果select * from (
(SELECT V FROM [TB] where P='1')x
cross join
(SELECT V FROM [TB] where P='2')y )
cross join
(SELECT V FROM [TB] where P='3')z--> 删除表格
--DROP TABLE [TB]
ID D P V
1 1 1 b
2 1 1 c
3 1 2 d
4 1 3 x
5 1 3 y
6 1 3 zP=1 对应 V有b,c
P=2 对应 V有d
P=3 对应 V有x,y,z根据P的不同对应 V的值组合起来
想要的结果为 列1 列2 列3
b d x
b d y
b d z
c d x
c d y
c d z还有一个D 用来固定P的