SQL 将行添加到每行

问题描述 投票:0回答:2

我有一张这样的桌子

id   sequence  phase  characteristics
1      1        300      001
2      1        300      001
2      2        300      002
..

另一个表格包含每个阶段的许多特征

phase  characteristics
300      003
300      004
300      005
....

我需要将所有特征添加到每个 id/序列,其中阶段为 300

为了更好地理解我需要的是

id   sequence  phase  characteristics
1      1        300      001
1      1        300      003
1      1        300      004
1      1        300      005
2      1        300      001
2      1        300      003
2      1        300      004
2      1        300      005
2      2        300      002
2      2        300      003
2      2        300      004
2      2        300      005
..

我尝试了几种解决方案,但我不精通SQL。有人可以提供帮助吗?先谢谢你了

sql sql-server sql-server-2019
2个回答
0
投票

您可以在表之间使用 CROSS JOIN,将所有特性获取到一个 pahse

SELECT
s.id,   s.sequence,  s.phase , c.characteristics
FROM table1 s CROSS JOIN characteristics  c
ON s.phase   = c.phase  

0
投票

所以看起来您想要扩展表中每个 id/sequwnce 组合的行,其中 is 阶段为 300 。

这里有一个sql查询

WITH Allcharachteristics As (
select '001' AS characheristic 
UNION ALL
Select '002'
UNION ALL
Select '003'
UNION ALL
Select '004'
UNION ALL
Select '005'
-- Add more characteristics if needed 
)

Select t.id, t.sequence, t.phase, c.characteristic
From YourTable t
Cross Join Allcharachteristics c
where t. phase = 300
Order by t.id, t.sequence,  c.characteristic;

//希望这会有所帮助,有些字符是大写的,所以请正确填写

© www.soinside.com 2019 - 2024. All rights reserved.