【问题标题】:How can I parse a string value in one table to join with values in another table如何解析一个表中的字符串值以与另一个表中的值连接
【发布时间】:2017-07-12 22:43:19
【问题描述】:

我在哪里创建报告时遇到问题,我需要加入两个无法加入的表。我确实找到了他们可能加入的方法,但这很复杂。

有一个表 A,其中包含一个名为 select_criteria 的列。以下是它包含的 3 个值的一些示例:

SELECT DISTINCT SUM(TRANSCRIPTDETAIL.CREDIT_BILLING) FROM SOMETABLE WHERE   ((  STUDENTFINANCIAL.TUITION_EXEMPTION  =   'EMPFT'     )    OR     (   STUDENTFINANCIAL.TUITION_EXEMPTION  =   'EMPPT'     )))   

SELECT DISTINCT SUM(TRANSCRIPTDETAIL.CREDIT_BILLING) FROM SOMETABLE WHERE   (   STUDENTFINANCIAL.TUITION_EXEMPTION  =   'PART50'    )   

在表 B 中,我有一个名为 Tuition_exemption 的列,其中包含如下值:

EMPFT

EMPPT

PART50

在A表一栏的整个数值的尾部,有与B表数值相匹配的学费减免代码。

有没有一种方法可以使用 MSSQL 来解析 select_criteria 中长语句中的代码,以便它们与表 B 中的代码完美匹配?这是我对连接表 A 和表 B 的方法的想法,就像我需要做的那样。另一个复杂之处是 select_criteria 和 Tuition_exemption 值之间存在 1:many 的连接,但 Tuition_exemption 值和 select_criteria 值之间存在 1:1 的连接。

所以最后,在一个示例中,两个表之间的连接应该打印两次相同的 select_criteria 值(我从表 A 引用上面列表中的第一个值),但是在这两行中,两个不同的学费豁免值(EMPFT 和 EMPPT)。或者在表 A 示例 2 的情况下,它会打印一次并匹配 PART50 一次。

我被困在这里。我有一个语句成功获取了我想要的 select_criteria 值:

SELECT select_criteria
WHERE (
select_criteria LIKE '%EMPFT%' OR
select_criteria LIKE '%EMPPT%' OR
select_criteria LIKE '%PART50%' OR
)

但我需要做的是这个。当它获取我想要的 select_criteria 值时,我想将它匹配的代码打印到此表中的新列。这些代码是表 B 中的值,如“EMPFT”、“EMPPT”和“PART50”。这就是为什么我想基本上从 select_criteria 中解析代码,并将它们打印到表 A 的新列中。这样表 A 和表 B 就有一个匹配的值,我编写运行我的报告。我只是现在不知道如何在 SQL 中做到这一点。我有点了解 Perl,但希望在 SSMS 2012 中完成所有这些工作。

感谢您的帮助!

拜博

【问题讨论】:

    标签: sql parsing join ssms ssms-2012


    【解决方案1】:

    您可以使用任何返回布尔值的表达式作为连接条件。由于 LIKE 返回一个布尔值,您应该可以这样做:

    select *
    from tableA
    join tableB
    on tableA.select_criteria like '%' + tableB.codecolumn + '%'
    

    【讨论】:

    • 我按照你的建议尝试了这个,但是它的代码列来自表 B 为空,而表 A 中的值
    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多