2016-06-30 2 views
0

私は3つのテーブルを持っています。 Transactionsテーブルの子であるLineItemと拒否コンマで区切られたvarcharカラムからint値を見つける方法SQL

現在、lineitemsテーブルには、拒否テーブルのid値が含まれていますが、文字列値にカンマで区切られたrejectioncodesという列があります。

enter image description here

どのように私はidがそのvarchar型である行を選択することができるだろうか?もちろん

私のコードサンプルこれまで

select transactions.fTransactionID 
from Transactions inner join 
    LineItems 
    on transactions.fTransactionID = lineitems.fTransactionID 
where fTransactionStatusID = 11 and 
     LineItems.fRejectionCodes in (select fRejectionCodeID 
            from RejectionCodes 
            where fRejectionCodeID in (1,7,8,9,12,13,15) 
            _ 

私のクエリは、それが原因

+1

サンプルデータはどこですか? – MusicLovingIndianGirl

+3

この問題の本当の解決策は、テーブルデザインを変更することです。 –

+0

はオプションではありません。テーブルはルールに従ってビジネスで使用されています。私はちょうどクエリを実行する必要があります –

答えて

1

としては、設計変更がされるコメントで述べてvarchar型であることの列に行うことができないと言うだろう良いアイデアが、カンマで区切られた問題のために、それは良いですが、リンク怒鳴るで説明:

あなたがCを破るためにこれを使用することができます

http://www.databasejournal.com/features/mssql/converting-comma-separated-value-to-rows-and-vice-versa-in-sql-server.html

データを行に分けて処理します。

0
Use STUFF() with FOR XML PATH('')as follows Which gives you the same comma seperated result. 


SELECT STUFF((SELECT ',' + INSTITUTIONNAME 
      FROM EDUCATION EE 
      WHERE EE.STUDENTNUMBER=E.STUDENTNUMBER 
      ORDER BY sortOrder 
     FOR XML PATH('')), 1, 1, '') AS listStr 

FROM EDUCATION E 
GROUP BY E.STUDENTNUMBER 
関連する問題