Sql 为所有ID添加NAs,这样它们最多可以添加25个条目

Sql 为所有ID添加NAs,这样它们最多可以添加25个条目,sql,sql-server-2008,formatting,Sql,Sql Server 2008,Formatting,我正在使用SQLServer2008 我有很多表,我想根据ID并排放置,但是每个ID的行数不同 表1: ID Value1 1 'hello' 1 'world' 2 'random' 2 'words' 2 'exist' 4 'today' 表2: ID Value2 1 25 3 30 3 12 4 11 4 10 4 52 我想添加的是NAs,在这个示例中,每个id最多有4个条目,在实际的25个条目中。因此,我的输出是: 表3: I

我正在使用SQLServer2008

我有很多表,我想根据ID并排放置,但是每个ID的行数不同

表1:

ID  Value1
1   'hello'
1   'world'
2   'random'
2   'words'
2   'exist'
4   'today'
表2:

ID  Value2
1   25
3   30
3   12
4   11
4   10
4   52
我想添加的是NAs,在这个示例中,每个id最多有4个条目,在实际的25个条目中。因此,我的输出是:

表3:

ID  Value1    Value2
1   'hello'   25
1   'world'   na
1    na       na
1    na       na
2    'random' na
2    'words'  na
2    'exist'  na
2    na       na
3    na       30
3    na       12
3    na       na
3    na       na
4    'today'  11
4    na       10
4    na       52
4    na       na
在实际场景中,我有12个不同的表,每个表中每个id最多可以有25行,其中包括0个id,每个id的行在不同id的表中也可能不同

我不知道从哪里开始,我知道如何在id上将表连接在一起,并将所有行保留在那里,但不知道如何在每个id上获得25个,而不管有多少个特定id的条目


任何建议都将不胜感激

我对SQL Server不熟悉,所以我只想给你一个逐步的提示。您需要跨表获取ID的所有不同值,然后使用每个ID生成4个虚拟行,并使用窗口函数枚举每个表中的虚拟结果集+结果,如行\号,然后使用na填充不匹配的值。谢谢,我可能误解了最后一点,但加入排号在那里行吗?因为,例如,如果在resultset表中,我在第5行,id为2的第一行,那么在表中,如果表中每个id只有一行,那么第5行可能是id为5的。因此,如果我在行id上加入,它是否会在错误的行中结束,并且所有nas都在resultset表的末尾?您需要您的行号来根据您的id列枚举行。这是通过PARTITION by子句完成的,PARTITION by子句是窗口函数定义的一部分。这样,表1的第5行将是id=2的第一行,而表2的第5行将是例如id=5I的第二行。对于每个唯一id,我在步骤2中使用了虚拟行,但我似乎找不到任何关于如何为每个id创建多个条目的信息,或者至少对于大倍数,我找不到任何信息。有些人会手动为每个重复创建多个条目。有人对此有想法吗?例如,您可以在序列中生成四元素数组,然后在获得值后取消对其的测试,使其重复四次。