我有如下表:SQL连接获得2列的笛卡尔积了3列
create table #table (
time int,
key char(1),
val int
)
数据如下:
insert into #table (time, key, val) values (0,"a",1)
insert into #table (time, key, val) values (0,"b",2)
insert into #table (time, key, val) values (1,"a",10)
insert into #table (time, key, val) values (2,"b",20)
,我想拿出一个加入将产生以下行/列:
0 a 1
0 b 2
1 a 10
1 b 0
2 a 0
2 b 20
这基本上是笛卡尔乘积值的前2列ns以及它们在第三列中的相关值(当值存在时),否则为0。
我尝试了一些外连接的组合,但它们都没有工作。
请帮忙。
谢谢。
尝试连同多个子表(即'(从#table中选择键)作为key_table')以及整个表。另外,我在'key'(一个关键字)和'#table'('#'是一个注释开始(至少在MySQL中)“)时遇到了问题 –
字符串常量需要用SQL中的单引号括起来,而不是双引号。 '“a”是一个标识符,''a''是一个字符串常量。你正在使用哪个DBMS? –
对不起,我应该提到我使用Sybase ASE(应与MSSQL的语法相同)。这解释了#table表示一个临时表 –