Sql server 无法使用临时表创建视图
希望你能帮忙 我意识到,在SQL视图中不能有临时表,所以转换下面的查询以便在SQL视图中使用它的最佳方法是什么 提前谢谢Sql server 无法使用临时表创建视图,sql-server,tsql,Sql Server,Tsql,希望你能帮忙 我意识到,在SQL视图中不能有临时表,所以转换下面的查询以便在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
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
使用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'
使用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'
也许我们可以使用相同的限制将两个表连接在一起,然后选择所需的列:
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'
查一下CTE,常用的表格表达式。你的答案更好。我只是回答问题。你解决了问题;)@JuanCarlosOropeza不,你是对的,你应该小心谨慎,尽量坚持原始查询。有可能是另一个问题,一个简单的连接不会取代OP所拥有的。