rSQL While 循环插入

rSQL While Loop insert

*更新 - 请看下面(过去的图片)

我真的被这个特殊问题困住了,我有两个 table,项目和项目分配,它们由项目 ID 连接。

我的目标是使用项目分配 table 的行填充修改后的项目 table 的列。我在下面包含了一张图片来说明我想要实现的目标。

一个项目最多可以有 6 个项目分配。每个 Project Allocation 都有一个 Auto increment ID(Allocation ID)但是我不能在子选择中使用这个 ID 因为它不在 1-6 的范围内所以我可以区分谁是第一个 PA2 谁是聚酰胺3。

示例:

(SELECT pa1.name FROM table where project.projectid = project_allocations.projectid and JVID = '1') as [PA1 Name],

(SELECT pa2.name FROM table where project.projectid = project_allocations.projectid and JVID = '1') as [PA2 Name],

修改后的项目 table 包含 PA1、PA2、PA3 的列。我需要根据项目分配 table 填充这些列。因此,数据库中每个项目的第一条记录将是 PA1。

我整理了一个 SQL 代理作业,它删除并重新创建这个 table 添加的列,所以这更多是关于将项目分配行写入修改后的项目 table 来自 row_num?

有什么建议吗?

--更新

我现在需要做的是将 row_number 按 DESC 的顺序添加为每个项目的列。

因此每个项目 ID 的第一行将为 1,之后的每一行将为 2,3,4,5,6。

我在这个网站上找到了以下代码:

use db_name
with cte as
       (
            select *
           , new_row_id=ROW_NUMBER() OVER (ORDER BY eraprojectid desc)
          from era_project_allocations_m
         where era_project_allocations_m.eraprojectid = era_project_allocations_m.eraprojectid
       )
update cte
set row_id = new_row_id

update cte
set row_id = new_row_id

我在前面的 SQL 代理步骤中添加了 row_id 作为一列,这段代码运行了,但它没有为我生成一个 row_number FOR EACH projectid .

从上图可以看出;我需要为每个项目 ID 设置 1-2 个 - 有效地为我提供了数千个 1、2、3、4。

这样我就可以将它们分类 :)

据我所知,使用行号的查询就是您所追求的。 (此外,它可能是一个枢轴 table..)

示例:

create table Something (
  someId int,
  someValue varchar(255)
  );

insert into Something values (1, 'one'), (1, 'two'), (1, 'three'), (1, 'four'), (2, 'ein'), (2, 'swei'), (3, 'un')

with cte as (
select someId,
       someValue,
       row_number() over(partition by someId order by someId)  as rn
from Something
)
select distinct someId,
       (select someValue from cte where ct.someId = someId and rn = 1) as value1,
       (select someValue from cte where ct.someId = someId and rn = 2) as value2,
       (select someValue from cte where ct.someId = someId and rn = 3) as value3,
       (select someValue from cte where ct.someId = someId and rn = 4) as value4
into somethingElse
from cte ct;

select * from somethingElse;

结果:

someId  value1  value2  value3  value4
1       one     two     three   four
2       ein     swei    NULL    NULL
3       un      NULL    NULL    NULL