2014-03-25 58 views
0

我有一個像如何在sql server中的select列中寫入條件?

select AVG(CAST(DATEDIFF(Day,CreatedDate,FirstTouchDate) AS BIGINT) else null end) AS avgdaystofirstattempt, 
     AVG(CAST(DATEDIFF(Day,CreatedDate,Completeddate) AS BIGINT)) AS AvgDaystoComplete 
from Table1 

Select語句我怎麼能寫列avgdaystofirstattempt條件 - FirstTouchdate不LIKE '%1900%' 的選擇本身而不是where子句。

在此先感謝

+0

你不能。該條件具有函數'avg()',這是'where'子句中不允許的。它在「有」條款中被允許。爲什麼不編輯問題幷包含樣本數據和期望的結果,而不是僅顯示不起作用的查詢? –

+0

我認爲他想要做的是有選擇地在'avg'語句中只包含特定的行,而不是完全從查詢中排除它們。 –

回答

0

可以有選擇地包括通過使用CASE在彙總報表數據。從你的問題中不太清楚,但我認爲你想要這樣的東西:

SELECT AVG(
      CASE 
       WHEN DATEDIFF(Day,CreatedDate,FirstTouchDate) < 1900 THEN NULL 
       ELSE CAST(DATEDIFF(Day,CreatedDate,FirstTouchDate) AS BIGINT) 
       END 
      ) AS avgdaystofirstattempt, 
     AVG(CAST(DATEDIFF(Day,CreatedDate,Completeddate) AS BIGINT)) AS AvgDaystoComplete 
FROM Table1