2016-01-20 94 views
0

我有一個查詢,執行2列(col1和col2)的計算,然後根據給定的標準(時間= week1和week2)和組的平均結果他們基於另一個標準(ID)。結合兩個查詢功能和平均每個

它看起來像:

SELECT subquery1.[ID], Avg (Param1) as Avg_Param1 
FROM 
(
SELECT [Table1].[ID], [Table1].Time, [col1]/40)/[col2] AS Param1 
FROM Table1 
) AS subquery1 
WHERE (subQuery1.Time = 'week 1' or subquery1.Time = 'Week 2') 
Group By subquery1.[ID] 
; 

現在我想在同一個查詢中創建一個名爲Avg_param2列的分別是標準就是讓說「五週」和「6周」。

我可以在第二個查詢中做到這一點,然後加入他們,但我怎麼能一次性做到這一點?

+0

通過使用IIF()函數,以適當的行發送到你想要的列。發送NULL以使其忽略平均計算中的行。 – Rabbit

回答

0

試試這個:

SELECT [Table1].[ID], 
     AVG(IIF([Table1].Time IN ('week 1','Week 2') , [col1]/40/[col2] , NULL)) AS Avg_Param1 , 
     AVG(IIF([Table1].Time IN ('week 5','Week 6') , [col1]/40/[col2] , NULL)) AS Avg_Param2 
FROM [Table1] 
Group By [Table1].[ID] 
+0

不得不在NULL後添加a),但它的工作!非常感謝 ! – JPC

+0

@ user3638420感謝那:) –