相关疑难解决方法(0)

这个带有交叉应用的派生表如何工作?

我借用了一些关于如何压缩和解压缩诊断代码字符串的代码,以便为我的数据仓库构建桥表。它运作良好。但是,我只是不明白它是如何进行解压缩的。这是以下代码的 SQL Fiddle

create table dimDiagnosisGroup (dxGroupKey int, dxCodeList nvarchar(1024))
insert into dimDiagnosisGroup
values  (1,'042, 070.70, 722.10'),
        (2,'042, 070.70, 780.52, 496, 716.90, 581.9'),
        (3,'042, 070.70, 782.1, V58.69'),
        (4,'042, 070.70, 782.3, V58.69')


 WITH XMLTaggedList AS (
     SELECT dxGroupKey,
        CAST('<I>' + REPLACE(dxCodeList, ', ', '</I><I>') + '</I>' AS XML)
            AS Diagnosis_Code_List
     FROM dimDiagnosisGroup
 )
     SELECT dxGroupKey,
            ExtractedDiagnosisList.X.value('.', 'VARCHAR(MAX)') AS dxCodeList2
          FROM XMLTaggedList
        CROSS APPLY Diagnosis_Code_List.nodes('//I') AS ExtractedDiagnosisList(X)
Run Code Online (Sandbox Code Playgroud)

我理解XMLTaggedList部分很好。我不明白的是交叉应用到ExtractedDiagnosisList(X),然后是ExtractedDiagnosisList.X.value('.', 'VARCHAR(MAX)')

当我将鼠标悬停在 select 语句中的ExtractedDiagnosisList 上时,SSMS …

sql-server cte functions cross-apply

6
推荐指数
1
解决办法
1596
查看次数

标签 统计

cross-apply ×1

cte ×1

functions ×1

sql-server ×1