Sql 带逗号分隔列的内部联接
我有一个主表RejectionList和一个事务表,其中拒绝原因是多个 假设MSTR_Rejection是主表名和RejectionID,RejectionReason是两个字段Sql 带逗号分隔列的内部联接,sql,sql-server,split,sql-server-2012,Sql,Sql Server,Split,Sql Server 2012,我有一个主表RejectionList和一个事务表,其中拒绝原因是多个 假设MSTR_Rejection是主表名和RejectionID,RejectionReason是两个字段 RejectionID RejectionReason 1 Invalid Mobile 2 Invalid Email 3 Invalid Pincode 现在我有了一个Trasaction表,其中rejecti
RejectionID RejectionReason
1 Invalid Mobile
2 Invalid Email
3 Invalid Pincode
现在我有了一个Trasaction表,其中rejectionID是多次的
TrasactionID RejectionReason
1 1
2 2,3
3 1,2,3
现在,我想根据事务表中的RejectionReason创建一个拒绝报告组。我被困在这里。请帮帮我。您的数据库设计非常糟糕。您应该使用连接表,而不是逗号分隔的列表 这就是说,你可以用
做你想做的事,比如
。以下是一个例子:
select r.rejectionreason, count(*)
from MSTR_Rejection r join
Transaction t
on ',' + t.rejectionreason + ',' like '%,' + cast(m.RejectionId as varchar(255)) + ',%'
group by r.rejectionreason;
上述方法并不是特别有效。如果想要提高性能,需要修复数据库结构以使用连接表。您的数据库设计非常糟糕。您应该使用连接表,而不是逗号分隔的列表 这就是说,你可以用
做你想做的事,比如
。以下是一个例子:
select r.rejectionreason, count(*)
from MSTR_Rejection r join
Transaction t
on ',' + t.rejectionreason + ',' like '%,' + cast(m.RejectionId as varchar(255)) + ',%'
group by r.rejectionreason;
上述方法并不是特别有效。如果要提高性能,需要修复数据库结构以使用连接表。您好,您可能需要尝试ListAg,而对于oracle,对于sql server,如果他们有等效的连接表,则没有使用: LISTAGG: 挑选 索赔编号:, 总(金额)支付金额, 组内的列表标记(收款人“/”)(按收款人描述排序)payname 从…起 SCHEMA.TABLENAME 分组索赔编号
Here's my table
CLAIM_NO PAYEE AMT
2014-1-10-1315 H-088 john 100
2014-1-10-1315 H-091 john 100
2014-1-10-1315 H-087 john 1000
2014-1-10-1315 H-113 op personnel 1150
2014-1-10-1315 H-087 tim 575.25
here's the result:
CLAIM_NO PAY_AMT PAYNAME
2014-1-10-1315 H-087 1575.25 tim/ john
2014-1-10-1315 H-088 100 john
2014-1-10-1315 H-091 100 john
2014-1-10-1315 H-113 1150 op personnel
我之前说的那个群组,实际上没有用,我只是用谷歌搜索一下。
您可以用逗号替换正斜杠分隔符。您好,您可能想尝试使用Listag来代替oracle,sql server,如果他们有一个与之等效的名称,则没有在上使用: LISTAGG: 挑选 索赔编号:, 总(金额)支付金额, 组内的列表标记(收款人“/”)(按收款人描述排序)payname 从…起 SCHEMA.TABLENAME 分组索赔编号
Here's my table
CLAIM_NO PAYEE AMT
2014-1-10-1315 H-088 john 100
2014-1-10-1315 H-091 john 100
2014-1-10-1315 H-087 john 1000
2014-1-10-1315 H-113 op personnel 1150
2014-1-10-1315 H-087 tim 575.25
here's the result:
CLAIM_NO PAY_AMT PAYNAME
2014-1-10-1315 H-087 1575.25 tim/ john
2014-1-10-1315 H-088 100 john
2014-1-10-1315 H-091 100 john
2014-1-10-1315 H-113 1150 op personnel
我之前说的那个群组,实际上没有用,我只是用谷歌搜索一下。
您可以用逗号替换正斜杠分隔符。逗号分隔的列始终表示数据库设计已损坏…如果您展示您迄今为止的尝试,这将是一件好事。您使用的是什么数据库?我使用的是MS Sqlserver2012@piet.t“永远”是一个极端的词。逗号分隔的列总是表示数据库设计已损坏…如果您展示您迄今为止所尝试的内容,这将是一件好事。您使用的是什么数据库?我使用的是MS Sqlserver2012@piet.t“总是”是一个极端的词,请告诉我怎么用。我需要那个东西,请告诉我怎么做。我需要那个东西。亲爱的戈登·林诺夫,什么是m.RejectionID亲爱的戈登·林诺夫,我修好了isseu,它成功了。非常感谢。亲爱的Gordon Linoff,什么是m.RejectionID亲爱的Gordon Linoff,我修好了isseu,它成功了。非常感谢你。