不是执行25个以上的内部联接和单个select语句,而是有一种更动态的方式来处理与1条记录关联的“ ACTION_NAME”列中的所有项目,并将它们显示为多行?每个都有自己的列名称(但可以是随机名称)。
我实际上必须使用一个表列,该表列可以包含25个甚至更多的项目。我永远无法真正知道到底有多少。我想使代码能够自我维持,以便将来进行更改。最终,我需要在它们自己的列中使用它们,以便可以将它们以所需格式显示在“邮件合并信”中。谢谢!
我正在使用CROSS APPLY,并且当我尝试在SELECT语句中创建所需的内容时,我只能看到与与一个记录一起列出的一个记录相关联的所有“ ACTION_NAME”项目,这些记录在由'分隔的一列中;'。从那开始,我需要将分号中的每个项目都分离到自己的列中。
SELECT DISTINCT
a.[PersonID],
a.[ACTION_ID],
a.[ACTION_NAME],
d.name
FROM dbo.[ACTIONSCHEDULE] a
CROSS APPLY (SELECT substring(a2.[ACTION_NAME],1,100) +';'
FROM [ACTIONSCHEDULE] a2
WHERE a2.PEOPLE_ORG_CODE_ID=a.PEOPLE_ORG_CODE_ID
FOR XML PATH('')) D (name)
WHERE ( a.[ACADEMIC_YEAR] > '2018' )
例如,ID#1在a。[ACTION_NAME]中包含2个项目。这以传统方式显示,在一列中有两行。我试过的是使d.name工作,以使记录ID为#1的行为多列。
ID ACTION_NAME name
--------------------------------------------
1 ADM Folder PARTNE20;ADM Folder;
1 PARTNE20 PARTNE20;ADM Folder;
我希望它看起来像什么
ID name1 name2
--------------------------------------------
1 ADM Folder PARTNE20
但是,它又不是2列或4列,有些记录有超过25个与之相关的项目。好的,谢谢!