2017-03-10 7 views
0

私は質問をもっと明快に提供することなく質問したと思います。SQL結合値を操作する

私は結果を保存する一時テーブルを持っています。次に、予測結果を取得するCTE(myTrackingData)があります。両方のセットは、被験者に関連するFK idを有する。

私は簡単だが、私の問題はmyTrackingDataには "History"の予測しかありませんが、ext_resultsは履歴が別個の件名(したがって別々のID)として保存されているということです。

私が2つに加わったら、ext_resultsを操作して、被験者が誰のようなものであっても、被験者は正確なマッチ履歴のIDだけを返すようにします。したがって、私のext_Resultsは、マッチを予測テーブルに戻します。

私はこのステートメントがselectを使用してselectを使って履歴のようなすべてのサブジェクトに一致するIDを取得すると思っていましたが、THENステートメントが間違っているので、 'サブクエリが複数の値を返しました' WHEN文にWHERE句が必要なのかもしれません):

SELECT (CASE WHEN (SELECT SubjectName FROM subjects) LIKE '%History%'  
      THEN (SELECT SubjectsID FROM Subjects) 
      ELSE intSubjectID 
     END) 

ご助言お願いします。

+3

サンプルデータと必要な結果を入力してください。あなたがしようとしていることは明確ではありません。 –

+0

こんにちは@GordonLinoff、私はOPを修正しました。 – Imran

答えて

0

だから私の直感は正しかったです。 THEN Selectステートメントにwhere句を追加するだけで済みました。

1

私はあなたが正常にLEFT JOINを使用して、このような何かをするだろうと思う:

SELECT COALESCE(sh.SubjectsId, intSubjectID) 
FROM . . . LEFT JOIN 
    Subjects sh 
    ON sh.? = ??.?? AND 
     sh.SubjectName LIKE '%History%' 

あなたの質問は、テーブルをリンクする方法についての情報を提供していませんが、これは一般的な方向であるように見えるでしょう。

0

これは、あなたが、私はそれが正しい理解場合

SELECT CASE WHEN SubjectName LIKE '%History%' 
     THEN SubjectsID ELSE intSubjectID END AS RESULT FROM subjects 
0

をやろうとしているものの正しい構文かもしれません。何をやろうとしていることである:表の科目のすべての行について

1、サブジェクト名は「歴史」が含まれている場合サブジェクト名が含まれていない場合は、その後、そのSubjectsID

2を返します'History'では、代わりに値(intSubjectID)を返します。ここではintSubjectIdとして0を使用します。以下は

私が作品を考えるものです:

SELECT CASE WHEN SubjectName LIKE '%History%' THEN SubjectsID ELSE 0 END 
FROM Subjects