在SQL Server中创建交叉选项卡



我有两个相等的集合(例如,[1,2,3]),并且想要创建一个包含所有可能组合的表,以便稍后在新列中填充现有计数,而不是仅仅计数和执行GROUP BY。

我已经试过了:

CREATE TABLE table1
(
Var1 varchar(254),
Var2 varchar(254)
)
INSERT INTO table1 (Var1) VALUES ('1')
INSERT INTO table1 (Var1) VALUES ('2')
INSERT INTO table1 (Var1) VALUES ('3')
INSERT INTO table1 (Var2) VALUES ('1')
INSERT INTO table1 (Var2) VALUES ('2')
INSERT INTO table1 (Var2) VALUES ('3')

但是,这会导致:

<表类>Var1Var2tbody><<tr>1空2空3空空1空2空3

使用示例表和值:

select a.var1, b.Var2
from table1 a, table1 b
where a.var1 is not null and b.Var2 is not null
order by a.var1, b.Var2

注意:你可以只使用单列

CREATE TABLE table1(Var1 varchar(254))
INSERT INTO table1 (Var1) values ('1')
INSERT INTO table1 (Var1) values ('2')
INSERT INTO table1 (Var1) values ('3')
select a.var1, b.Var1 var2
from table1 a, table1 b
order by a.var1, b.Var1

您可以对cross apply执行此操作。

select v1.var1, v2.var2
from table1 v1
cross apply table1 v2
order by v1.var1

最新更新