SQL内联视图的语法帮助

问题描述 投票:0回答:1

我仍在学习SQL并在内联视图中苦苦挣扎。我一直在从事一个项目,在该项目中我需要考虑某些事物的滞后性,因此需要依靠嵌套的事物来表达。但是我对内联视图的语法还不满意,并且会不断在括号,逗号等上引发错误。有人可以帮我清理它以便运行吗?

SELECT * 
    ,   SiteName
    ,   VentCount                           AS 'Number Of Vents'
    ,   ROUND(PumpAHours,1)                 AS 'Pump A Hours'
    ,   ROUND(PumpBHours,1)                 AS 'Pump B Hours'
    ,   ROUND(PumpAStarts, 1)               AS 'Pump A Starts'
    ,   ROUND(PumpBStarts, 1)               AS 'Pump B Starts'

FROM ( 
SELECT * , SiteName 
, SUM(CASE WHEN ECV36_Open_Count_Lifetime - Lag_ECV36_Open_Count_Lifetime Between 1 AND 5 THEN ECV36_Open_Count_Lifetime - Lag_ECV36_Open_Count_Lifetime ELSE 0 END)    AS 'VentCount'
, CASE WHEN NULLIF(SUM(CASE WHEN PumpAStatus LIKE '%Running%' THEN 1 ELSE 0 END) / CAST(20 AS FLOAT),0) < MAX(Pump_A_Hours) - MIN(Pump_A_Hours)
         THEN SUM(CASE WHEN PumpAStatus LIKE '%Running%' THEN 1 ELSE 0 END) / CAST(20 AS FLOAT)
         ELSE MAX(Pump_A_Hours) - MIN(Pump_A_Hours) END                                                 AS 'PumpAHours'
, CASE  WHEN NULLIF(SUM(CASE WHEN PumpBStatus LIKE '%Running%' THEN 1 ELSE 0 END) / CAST(20 AS FLOAT),0) < MAX(Pump_B_Hours) - MIN(Pump_B_Hours)
            THEN SUM(CASE WHEN PumpBStatus LIKE '%Running%' THEN 1 ELSE 0 END) / CAST(20 AS FLOAT)
            ELSE MAX(Pump_B_Hours) - MIN(Pump_B_Hours) END                                              AS 'PumpBHours'
,COUNT(CASE WHEN Pump_A_StateId = 12 OR Pump_A_StateId = 14 OR Pump_A_StateId = 9 OR Pump_A_StateId = 1837 OR Pump_A_StateId = 1839 THEN 1 END) AS PumpAStarts
,COUNT(CASE WHEN Pump_B_StateId = 12 OR Pump_B_StateId = 14 OR Pump_B_StateId = 9 OR Pump_B_StateId = 1837 OR Pump_B_StateId = 1839 THEN 1 END) AS PumpBStarts

FROM ( 
SELECT * , SiteName
, LAG([ECV36_Open_Count_Lifetime],1,NULL)   OVER(PARTITION BY R.SiteId ORDER BY RecordDateTime ASC) AS 'Lag_ECV36_Open_Count_Lifetime'

FROM ( 
[Cryo].[dbo].[Record]       R
Cryo.dbo.Site S on S.SiteId = R.RecordId
Cryo.dbo.pad P on P.RecordId = R.RecordId
Cryo.dbo.Pump PP on PP.RecordId = R.RecordId
)a
)a
WHERE RecordDateTime BETWEEN DATEADD(DD,-1,CONVERT(DATE,GETDATE())) AND DATEADD(DD, 0,CONVERT(DATE,GETDATE()))
)a
sql sql-server ssms
1个回答
0
投票

http://www.dpriver.com/pp/sqlformat.htm

此外,您可以使用shift + alt组合键设置行的格式。

© www.soinside.com 2019 - 2024. All rights reserved.