Year Life Method
1 9 x
2 9 x
4 9 x
2 10 y
4 10 y
表A
我有上面的表格。
我想得到如下。
Year Life Method
1 9 x
2 9 x
3 9 x
4 9 x
5 9 x
1 10 y
2 10 y
3 10 y
4 10 y
5 10 y
表B
意思是说每个生命和方法都有1到5年。
如何使用SQL查询使用表B创建表B.
任何想法?
答案 0 :(得分:1)
select b.yr, a.life, a.method
from (select distinct life,method from tableA) a,
(select 1 union select 2 union select 3 union select 4 union select 5) b
这将进行交叉连接并获得所需的结果。
编辑:创建临时表以处理多年值
DROP TABLE Numbers;
CREATE TABLE Numbers (Num INT NOT NULL);
DECLARE @x INT;
SELECT @x = 1;
WHILE @x <= 60
BEGIN
INSERT INTO Numbers(Num) VALUES (@x);
SELECT @x = @x + 1;
END;
然后查询
select n.yr, a.life, a.method
from (select distinct life,method from tableA) a,
Numbers n
如果您必须临时执行此操作,也可以使用上面显示的union
语句。
select 1 union select 2 union ...union select n
答案 1 :(得分:0)
假设method
life
具有相同的值,那么您可以执行以下操作:
with nums as (
select row_number() over (order by (select null)) as n
from master..spt_values
)
select n.n as year, l.life, l.method
from nums n cross join
(select life, method from table t) l
where n.n <= 5;