将列表中的值添加到每个唯一的ID代码[SQL]

将列表中的值添加到每个唯一的ID代码[SQL],sql,sql-server,Sql,Sql Server,我有一个产品名称列表(书籍、汽车、桌子)。我的表当前如下所示: 我希望我的表格中显示的是每种工作ID的所有3种产品,例如: 因此,基本上,对于每个不同的JobID,应该有3种产品 如何在SQL中实现这一点?这是一个示例数据集,实际上我正在处理一个更大、更复杂的数据集,但我想了解如何使用一个简单的数据集并使其适应我的更大的数据集。使用交叉连接: select j.jobid, p.productname from (select distinct jobid from t) j cross j

我有一个产品名称列表(书籍、汽车、桌子)。我的表当前如下所示:

我希望我的表格中显示的是每种工作ID的所有3种产品,例如:

因此,基本上,对于每个不同的JobID,应该有3种产品


如何在SQL中实现这一点?这是一个示例数据集,实际上我正在处理一个更大、更复杂的数据集,但我想了解如何使用一个简单的数据集并使其适应我的更大的数据集。

使用
交叉连接

select j.jobid, p.productname
from (select distinct jobid from t) j cross join
     (select distinct productname from t) p
order by j.jobid, p.productname;

你必须使用交叉连接

select * from table t1
cross join table t2;

*在@Eric的注释后,按从序号位置到实际列名的顺序编辑顺序

WITH products(  jobId ,productname )
 AS
 (
  SELECT 1200, 'Book' UNION
  SELECT 1400, 'Car' UNION
  SELECT 1600, 'Table' 
 ) 

Select j.jobid, p.productname
from products j
cross join products p
order by j.jobid, p.productname

jobid   productname
1200    Book
1200    Car
1200    Table
1400    Book
1400    Car
1400    Table
1600    Book
1600    Car
1600    Table

跳过上的
子句。选择*将在输出中产生4列,与预期结果不同。是。可以仅用于选择,但可能有严重的影响。当so中有人试图在他们的生活环境中复制您的答案时,情况就更糟了。