2017-05-18 16 views
0

た後、私は次のようなアプローチがあります、最初のチェックがある塗りつぶし一時テーブルSQL Serverでチェック結果

ない米国からのデータです:だから

WITH Step1 AS (
     SELECT 
      t1.IdentNo, 
      t1.Name 
     FROM 
      dbo.Table1 t1 
     WHERE 
      t1.CCode <> 'US' 
    ), 

Step2 AS (
     SELECT DISTINCT 
      t2.IdentNo, 
      t2.Name 
     FROM 
      dbo.Table2 t2 
     INNER JOIN 
      Step1 s1 
     ON 
      t2.IdentNo = s1.IdentNo 
     WHERE 
      (t2.artNo='AB504' AND t2.VALUE='1') 
    ) 

-- TEST RESULT 
    SELECT 
     * 
    FROM 
     Step2 

、解決策はで、する必要があります最初のステップIdentNo -sをすべて一時テーブルに追加します。次に、2番目のステップでは、返されたすべての値が「1」のtempテーブルを更新したいとします。IdentNo -s

一時テーブルはそうのように定義されます:私はあなたがSTEP2のCTEのごstep1.nameを含める必要があると思う

IdentNo | Name | Step1 | Step2 

答えて

0

は、あなたが探しているもので、コードの下に確認してください

;WITH Step1 AS (
     SELECT 
      t1.IdentNo, 
      t1.Name 
     FROM 
      dbo.Table1 t1 
     WHERE 
      t1.CCode <> 'US' 
    ), 

Step2 AS (
     SELECT DISTINCT 
      t2.IdentNo, 
      t2.Name as [Step2Name], 
      s1.Name as [Step1Name] 
     FROM 
      dbo.Table2 t2 
     INNER JOIN 
      Step1 s1 
     ON 
      t2.IdentNo = s1.IdentNo 
     WHERE 
      (t2.artNo='AB504' AND t2.VALUE='1') 
    ) 

-- TEST RESULT 
    SELECT 
     IdentNo, Step1Name as Name, Step1Name as Step1, Step2Name as Step2 
    FROM 
     Step2 

あなたが探している名前がまだ明確でない

+0

trueまたはfalseを表示するStep1とStep2の列が必要です。true = IdentNoはStepの結果で使用できます。 – yuro

関連する問題