在SQL中连接相同的表

在SQL中连接相同的表,sql,Sql,我有一个表,有4列,如客户ID、人员ID、年份、单位成本 我想用表中的所有年份加入同一个表,并保留所有客户ID和个人ID的所有年份。如果表中没有相应客户ID和人员ID的数据,则我希望成本为空。 预期数据: 如果我理解正确,您可以使用交叉联接生成行,使用左联接引入现有数据: select pc.*, y.*, t.cost from (select distinct customer, personid from customer_table) pc cross join (select

我有一个表,有4列,如客户ID、人员ID、年份、单位成本

我想用表中的所有年份加入同一个表,并保留所有客户ID和个人ID的所有年份。如果表中没有相应客户ID和人员ID的数据,则我希望成本为空。 预期数据:


如果我理解正确,您可以使用交叉联接生成行,使用左联接引入现有数据:

select pc.*, y.*, t.cost
from (select distinct customer, personid from customer_table) pc cross join
     (select distinct year from customer_table) y left join
     customer_table t
     on t.customer = pc.customer and t.personid = pc.personid and t.year = y.year;        

. . 我删除了不一致的数据库标记。请仅标记您真正使用的数据库。您使用的是哪个数据库?谢谢您的快速回复。我尝试过将源表t替换为代码中的customer_表t,但我得到了错误:表示t和p列无法绑定。选择pc.*,y.*,t.price from select distinct customer,personid from customer\u table t pc交叉连接选择distinct year from customer\u table t y左连接customer\u table t上的t.customer=pc.customer,t.personid=p.personid,t.year=y.year;