联接两个没有任何匹配列的表

编程入门 行业动态 更新时间:2024-10-24 05:22:24
本文介绍了联接两个没有任何匹配列的表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有两个如下表. 表1:Matrix表 表2:Transaction表

Hi, I have two tables like as follows. Table 1 : Matrix Table Table 2 : Transaction Table

-- Matrix Table CREATE TABLE [matrixtable] ( [prkey] [int] IDENTITY (1, 1) NOT NULL , [polid] [int] NULL , [clmtypeid] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [insid] [int] NULL , CONSTRAINT [PK_matrixtable] PRIMARY KEY CLUSTERED ( [prkey] ) ON [PRIMARY] ) ON [PRIMARY] GO -- Transaction table CREATE TABLE [ClaimTable] ( [claimid] [int] NOT NULL , [polid] [int] NOT NULL , [insid] [int] NOT NULL , [clmtypeid] [int] NULL ) ON [PRIMARY] GO --Values for Matrx Table INSERT INTO [ClaimTable](claimid,polid,insid,clmtypeid) SELECT 101,1000,1,1 UNION ALL SELECT 102,1000,1,2 UNION ALL SELECT 103,1000,1,6 -- Value for Transaction Table INSERT INTO matrixtable (polid,clmtypeid,insid) SELECT 1000,'1,2,6',1 UNION ALL SELECT 1001,'3',1

我需要基于"clmtypeid"加入这两个表. 提前谢谢. 帮助我解决此问题.

I need to join this two table based on "clmtypeid". Advance Thanks. Help me to solve this problem.

推荐答案

在这里是: Here it is : select * from ( select prkey, claimid from ( SELECT prkey, CAST('<r>' + REPLACE(clmtypeid, ',', '</r><r>') + '</r>' AS XML) claimXml FROM matrixtable ) newmat CROSS APPLY ( SELECT CId.value('.', 'int') ClaimId FROM newmat.claimXml.nodes('r') AS ClaimCodes(CId) ) Splited ) s inner join claimtable c on s.ClaimId = c.clmtypeid

希望对您有所帮助.

Hope it helps.

您好, 终于找到了解决方法, Hi, At last I find the Solution, -- Actual Query SELECT C.claimid,C.polid,C.insid,C.clmtypeid FROM ClaimTable C INNER JOIN matrixtable M ON M.polid=C.polid AND C.clmtypeid IN (SELECT Value FROM dbo.fnSplitString (M.clmtypeid,',')) -- Split Function CREATE FUNCTION fnSplitString(@str nvarchar(max),@sep nvarchar(max)) RETURNS TABLE AS RETURN WITH a AS( SELECT CAST(0 AS BIGINT) as idx1,CHARINDEX(@sep,@str) idx2 UNION ALL SELECT idx2+1,CHARINDEX(@sep,@str,idx2+1) FROM a WHERE idx2>0 ) SELECT SUBSTRING(@str,idx1,COALESCE(NULLIF(idx2,0),LEN(@str)+1)-idx1) as value FROM a

要添加到先前的答案,请考虑在两个表之间添加外键:外键约束 [ ^ ] To add to previous answers, consider adding a foreign key between the two tables: FOREIGN KEY Constraints[^]

更多推荐

联接两个没有任何匹配列的表

本文发布于:2023-10-28 18:30:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1537431.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:没有任何   两个

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!