【发布时间】:2017-04-10 22:33:56
【问题描述】:
我有下表:
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 列的值与它们在第 3 列中的关联值的笛卡尔积,否则为 null 时为 0。
我尝试了几种外连接组合,但似乎都不起作用。
请帮忙。
谢谢。
【问题讨论】:
-
尝试将多个子表(即
(select key from #table) as key_table)与整个表连接在一起。另外,key(关键字)和#table(#是注释开始(至少在 MySQL 中))有问题 -
SQL 中字符串常量需要用单引号括起来,而不是双引号。
"a"是一个标识符,'a'是一个字符串常量。您使用的是哪个 DBMS? -
对不起,我应该提到我使用的是 Sybase ASE(应该是和 MSSQL 一样的语法)。这解释了#table 来表示一个临时表
标签: sql join sybase outer-join cartesian-product