2017-07-12 4 views
0

レポートを作成する際に、2つのテーブルを結合する必要があります。私は彼らが潜在的に参加する方法を見つけましたが、それは複雑です。1つのテーブルの文字列値を解析して別のテーブルの値と結合するにはどうすればよいですか

テーブルAがあり、select_criteriaという列があります。ここで、それが含まれている3つの値のいくつかの例である:内全体の値の末尾に

EMPFT 

EMPPT 

PART50 

:表Bにおいて

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' ) 

は、私のような値が含まtuition_exemptionという列を有します表Aの列には、表Bの値と一致する授業料免除コードがあります。

MSSQLを使用して、select_criteriaのlong文からコードを解析してコードと完全に一致する方法がありますかテーブルBから?これは私がする必要があるようにテーブルAとテーブルBに参加する方法の私の考えです。もう1つの問題は、select_criteriaとtuition_exemptionの値の間に1:多数の接続がありますが、tuition_exemptionの値とselect_criteriaの値の間に1:1の接続があることです。

最後に、2つのテーブル間の結合は、同じselect_criteria値を2回(表Aの上のリストの最初の値を参照しています)に印刷する必要があります。 2つの異なるtuition_exemption値(EMPFTとEMPPT)。あるいは、表Aの例2の場合、それは一度印刷され、PART50と一度一致する。

ここにはまっています。

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

しかし、私は何をする必要がこれです:私は正常に私が欲しいselect_criteria値をつかむ文を持っています。私が望むselect_criteriaの値を取得すると、このテーブルの新しい列に最大一致するコードを出力したいと考えています。これらのコードは、 'EMPFT'、 'EMPPT'、 'PART50'のような表Bの値です。だから私は基本的にselect_criteriaからコードを解析して、テーブルAの新しいカラムにそれらを出力することを考えていたのです。テーブルAとテーブルBは一致する値を持っていて、レポートを書き出します。私はSQLでこれを行う方法を今はしません。私はPerlでよく知っていますが、SSMS 2012でこれをすべて実行したいと考えていました。

ありがとうございました!

byobob

答えて

0

ブール値を結合条件として返す任意の式を使用できます。

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

あなたが示唆したように、私はこれを試してみましたが、しかし、それは値を持たない空のテーブルBからcodecolumn、とにtableAで出てくる:LIKEはブール値を返すので、あなたはこれを行うことができるはず – byobob

関連する問題