2017-08-22 11 views
2

テンポラリテーブルのビューを作成できません

私はあなたがSQLビューでTempテーブルを持つことができないので、SQLビューで使用できるように下のクエリを変換する最良の方法は何かを知っています。事前に

おかげ

SELECT 
    a.KeyField, a.AlphaValue AS Compostable 
INTO 
    #DAT 
FROM 
    [SysproCompanyA].[dbo].AdmFormData a 
WHERE 
    a.FieldName = 'DAT001' 

SELECT 
    b.KeyField, b.AlphaValue AS Trial 
INTO 
    #PAS 
FROM 
    [SysproCompanyA].[dbo].AdmFormData b 
WHERE 
    b.FieldName = 'PAS001' 

SELECT 
    c.KeyField AS JobNumber, c.Compostable, d.Trial 
FROM 
    #DAT c 
INNER JOIN 
    #PAS d ON c.KeyField = d.KeyField 
WHERE 
    c.KeyField = '00170579' 

DROP TABLE #DAT 
DROP TABLE #PAS 
+0

CTE、Common Table Expressionをルックアップします。 – OTTA

答えて

3

使用CTEの

WITH [DAT] as (
    SELECT a.KeyField, a.AlphaValue AS Compostable 
    FROM [SysproCompanyA].[dbo].AdmFormData a 
    WHERE a.FieldName = 'DAT001' 
), [PAS] as (
    SELECT b.KeyField, b.AlphaValue AS Trial 
    FROM [SysproCompanyA].[dbo].AdmFormData b 
    WHERE b.FieldName = 'PAS001' 
) 
SELECT c.KeyField AS JobNumber, c.Compostable, d.Trial 
FROM [DAT] c 
INNER JOIN [PAS] d ON c.KeyField = d.KeyField 
WHERE c.KeyField = '00170579' 
1

利用のCTE

create view MyView 
as 
with DAT as 
(
    SELECT a.KeyField, a.AlphaValue AS Compostable 
    FROM [SysproCompanyA].[dbo].AdmFormData a 
    WHERE a.FieldName = 'DAT001' 
) 
, PAS as 
( 
    SELECT b.KeyField, b.AlphaValue AS Trial 
    FROM [SysproCompanyA].[dbo].AdmFormData b 
    WHERE b.FieldName = 'PAS001' 
) 
    SELECT c.KeyField AS JobNumber, c.Compostable, d.Trial 
    FROM DAT c INNER JOIN PAS d ON c.KeyField = d.KeyField 
    WHERE c.KeyField = '00170579' 
7

おそらく、我々はただ一緒に同じ制限を持つ2つのテーブルを、参加することができ、その後、選択し目的の列:

SELECT 
    c.KeyField AS JobNumber, 
    c.Compostable, 
    d.Trial 
FROM [SysproCompanyA].[dbo].AdmFormData c 
INNER JOIN [SysproCompanyA].[dbo].AdmFormData d 
    ON c.KeyField = d.KeyField 
WHERE 
    c.FieldName = 'DAT001' AND 
    d.FieldName = 'PAS001' AND 
    c.KeyField = '00170579' 
+0

あなたの答えはより良いです。私はちょうど質問に答えます。あなたは問題を解決します;) –

+0

@JuanCarlosOropezaいいえ、あなたは慎重で元のクエリを可能な限り厳密に守ります。単純な結合がOPの持つものを置き換えないということは、別の疑問のために可能です。 –

関連する問題