2014-03-04 40 views
0

我創建一個視圖,但我需要執行另一個選擇來填充該視圖的一列。這是我想使用視圖的查詢:創建一個包含另一個選擇結果的列的視圖

SELECT JOB, REL, PHASE, AVG(TCOUNT) AS AVGCOUNT, @NUMFRAMES AS NUMFRAMES, @NUMFRAMES/AVG(TCOUNT) AS REMAIN_DAYS 
FROM 
(SELECT 
    vwFRAME_TOTALS.JOB 
    ,vwFRAME_TOTALS.REL 
    ,vwFRAME_TOTALS.PHASE 
    ,vwFRAME_TOTALS.[DAY] 
    ,COUNT(vwFRAME_TOTALS.FR_ID) AS TCOUNT 
FROM 
    vwFRAME_TOTALS 
    GROUP BY JOB,REL,PHASE,DAY) 
AS COUNTS 
GROUP BY JOB, REL, PHASE 

和@NUMFRAMES來自另一個SELECT,就像這樣:

SELECT @NUMFRAMES=count(*) FROM dbo.WFR 

我怎麼能在一個語句做到這一點?

+0

公用表表達式可以使用:http://msdn.microsoft.com/en-us/library/ms175972.aspx –

回答

1
SELECT JOB, REL, PHASE, AVG(TCOUNT) AS AVGCOUNT, (SELECT count(*) FROM dbo.WFR) AS NUMFRAMES, (SELECT count(*) FROM dbo.WFR)/AVG(TCOUNT) AS REMAIN_DAYS 
FROM 
(SELECT 
    vwFRAME_TOTALS.JOB 
    ,vwFRAME_TOTALS.REL 
    ,vwFRAME_TOTALS.PHASE 
    ,vwFRAME_TOTALS.[DAY] 
    ,COUNT(vwFRAME_TOTALS.FR_ID) AS TCOUNT 
FROM 
    vwFRAME_TOTALS 
    GROUP BY JOB,REL,PHASE,DAY) 
AS COUNTS 
GROUP BY JOB, REL, PHASE 
+0

這結束了工作。我忘了你可以在查詢的選擇部分放置一個子查詢。 – muttley91

0

由於我沒有自己的模式,所以我很難測試,但是會有這樣的工作嗎?

SELECT JOB, REL, PHASE, AVG(TCOUNT) AS AVGCOUNT, NUMFRAMES, @NUMFRAMES/AVG(TCOUNT) AS REMAIN_DAYS 
FROM 
(SELECT 
    vwFRAME_TOTALS.JOB 
    ,vwFRAME_TOTALS.REL 
    ,vwFRAME_TOTALS.PHASE 
    ,vwFRAME_TOTALS.[DAY] 
    ,COUNT(vwFRAME_TOTALS.FR_ID) AS TCOUNT 
FROM 
    vwFRAME_TOTALS 
    GROUP BY JOB,REL,PHASE,DAY) 
AS COUNTS 
INNER JOIN (SELECT count(*) as NUMFRAMES FROM dbo.WFR) AS FRAMES 
ON 1=1 
GROUP BY JOB, REL, PHASE 
相關問題