【发布时间】:2023-01-27 00:23:24
【问题描述】:
有没有更好的方法来编写下面的查询-
基本上下面的 2 个表将从 details_2 表中提取大量数据,但会根据 #exceptions 表中编码的不同原因加入字段。如果我需要扩展我的问题并提供更多详细信息,请告诉我。
Select
a.Fieldname1,
a.Fieldname2,
a.fieldname3
from
#Exceptions a, [DETAILS_2] b
where
(case when a.REASON_CD = 'LOBMKT' then CONCAT(a.LOB_CD,a.GEO_MARKET) end = concat(b.LOB_CD,b.GEO_MARKET)) or
(case when a.REASON_CD = 'LOB' then a.LOB_CD end = b.LOB_CD) or
(case when a.REASON_CD = 'CAT' then a.CTRCT_CAT_CD end = b.CTRCT_CAT_CD) or
(case when a.REASON_CD = 'LOBST' then CONCAT(a.LOB_CD,a.[derived_GEO_MARKET]) end = concat(b.LOB_CD,b.GEO_MARKET))
谢谢!
上面的代码是我试过的。
type here
【问题讨论】:
-
欢迎来到堆栈溢出!为了帮助您解决query-optimization 问题,我们需要查看您的表定义、索引定义和 EXPLAIN 的输出。请read this,然后edit你的问题。而且,您有一个没有任何连接标准的逗号连接。
-
请添加示例数据和所需的输出。
-
看来您没有必要使用 CONCAT()。只是在没有看到示例数据和所需输出的情况下胡乱猜测。
标签: sql sql-server stored-procedures query-optimization inner-join