在没有临时表的情况下重写此查询

Re-write this query without temp tables

现在正在学习 SQL,不是特别大的临时 table,因为每次 运行 您的查询都必须放弃。基本上下面的这个查询从 patientinfo table 中提取信息并放入一个临时文件 table,然后可以用来可能与另一个 table 连接来修改这个查询,所以我不需要使用临时 tables?就像我的意思是无论如何从 table 中提取信息而不需要临时 table,就像我注释掉的那部分(进入)

SELECT PatientCode [Code]
     , PatientID [Pltid]        
     , CASE WHEN PatientStatus = 'R' THEN 'lefthospital'
            WHEN PatientStatus = 'I' THEN 'StillIn'
            ELSE 'unknown' END [CDStatus]
INTO #PatientInfoPull    
FROM PatientInfo

   
SELECT PatientInfo.*       
FROM #initCDPull

this query below pulls info from patientinfo table and put into a temp table, then can be used to possibly join with another table

好的,你正在做这样的事情:

 SELECT <fields>
 INTO #SomeTemp
 FROM SomeReal
 WHERE SomeColumn = 'SomeValue'

 SELECT *
 FROM SomeOtherReal r
 JOIN #SomeTemp t ON r.SomeOtherColumn = t.SomeOtherColumn

在这种情况下,您可以像这样使用子查询(正式名称:“Derived Table”):

SELECT *
FROM SomeOtherReal r
JOIN (
    SELECT <fields>
    FROM SomeReal
    WHERE SomeColumn = 'SomeValue'
) t ON r.SomeOtherColumn = t.SomeOtherColumn

或像这样的通用 Table 表达式 (CTE):

WITH t AS (
    SELECT <fields>
    FROM SomeReal
    WHERE SomeColumn = 'SomeValue'
)
SELECT *
FROM SomeOtherReal r
JOIN t ON r.SomeOtherColumn = t.SomeOtherColumn

不仅如此,您通常还可以像这样组合这些步骤:

SELECT t.<fields>, r.<fields>
FROM SomeOtherReal r
JOIN SomeReal t ON t.SomeOtherColumn = r.SomeOtherColumn
WHERE t.SomeColumn = 'SomeValue'