2016-12-19 18 views
1

私は別のテーブルから特定の基準を満たすテーブルから行番号を選択しようとしています。SQL - 結果を返すマルチ選択クエリ

私はそれを試してみて、簡単にするために一時テーブルを作成しているが、それはまだ私は何の結果

select RowNum 
from #temp1 
where #temp1.Name like (select EN_TYPE from LakeEncroachments where EN_ID = '0526') 

を返さない1番号

SELECT 
    RowNum 
FROM 
    (SELECT 
     ID, Name, RowNum = ROW_NUMBER() OVER (ORDER BY ID) 
    FROM 
     tblEncroachmentTypes) AS temp 
WHERE 
    temp.Name LIKE (SELECT EN_TYPE 
        FROM LakeEncroachments 
        WHERE EN_ID = '0526') 

を期待していたときに、現在のクエリが0の結果を返します。できるだけ多くの情報を提供しようとしていますが、他に何が必要なのか分かりません。

+0

'私はあなたが1つの番号を期待している..how 1 number'を、期待していたときにどのdata..alsoは、この作業を行い、テーブル含みません(ID番号、列番号、ID番号順)をテンキー とします。temp.Nameが好き(EN_TY = '0526'のEN_TYPEを選択してください) ' – TheGameiswar

+0

@TheGameiswar 1つの結果があるはずです。指定された侵入型の行番号。私がtemp.Nameのどこに 'マルチスリップドック'のような場所を使用すれば、私は期待される結果が得られます。 クエリーが 'multi-slip dock'のようなtemp.Nameのデータを返した場合、検索クエリ自体を調べる必要がある場合、提案したクエリは私に結果として – kevorski

+0

を与えません。 'EN_ID = '0526'が返ってきたLakeEncroachmentsからEN_TYPEを選択するのはどんな価値がありますか? 「マルチスリップドック」が返ってこない場合は、問題があります。 'マルチスリップドック'のようなものが返ってきたら、データ型であることもあれば、EN_ID = '0526'であるEN_TYPEをEN_TY = '0526'としてください。それらが一致しないようにする照合。 – SlimsGhost

答えて

1

あなたがlikeを使用する必要がある場合は、ワイルドカードを追加する必要があるかもしれません:likeのためのあなたのサブクエリが複数のを返した場合、また

select RowNum 
from (
select ID 
    , name 
    , RowNum = row_number() over (
    order by ID 
    ) 
from tblEncroachmentTypes 
) as temp 
where temp.name like '%' + (
    select EN_TYPE 
    from LakeEncroachments 
    where EN_ID = '0526' 
) + '%' 

SELECT RowNum 
from (Select ID, Name, RowNum = ROW_NUMBER() over (order by ID) from tblEncroachmentTypes) as temp 
where temp.Name Like '%'+(Select EN_TYPE from LakeEncroachments WHERE EN_ID = '0526')+'%' 

再フォーマットは次のようになりますあなたは別のアプローチが必要です。

+0

私はまだ0の結果が返ってきています。 – kevorski

+1

'EN_ID = '0526''にマッチする' EN_TYPE'値と、 'tblEncroachmentTypes'にマッチすると思われる' name'値を与えることができますか? – SqlZim

+1

EN_ID 526のエンクロッチメントタイプはマルチスリップドックであり、tblEncroachmentTypesのタイプは 'Multiple Slip Dock'です。私はこれが問題だと思います。 #facepalm – kevorski

0

あなたのサブクエリが複数の行を与える場合は、このクエリを使用

WITH temp as 
    (SELECT ID, Name, ROW_NUMBER() OVER (ORDER BY ID) as RowNum 
    FROM tblEncroachmentTypes) AS temp 
SELECT temp.RowNum 
FROM LakeEncroachments 
INNER JOIN temp ON temp.Name LIKE REPLACE(REPLACE(LakeEncroachments.EN_TYPE, '-', '% '), ' ', '% ') + '%' 
WHERE EN_ID = '0526' 
関連する問題