2017-05-18 83 views
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 
     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添加到临时表中。然后在第二步中,我想为所有返回的IdentNo -s更新临时表,其值为“1”。

临时表将被定义,像这样:

IdentNo | Name | Step1 | Step2 

回答

0

我认为你需要在第二步CTE你step1.name是你在找什么,请检查下面的代码

;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

我需要一个显示真或假的列Step1和Step2。true = IdentNo在Step结果中可用。 – yuro