2012-02-06 29 views
1

在Oracle它工作得很好......如何位機能工作

查詢for Oracle是如下

Select COMPONENT_ID, 
     COMPONENT_NAME, 
     POSITION_ID, 
     POSITION_NAME, 
     CHANNEL_ID, 
     CHANNEL_NAME, 
     Max(METRIC) as METRIC, 
     Max(TTD_ATTN) as TTD_ATTN_Max, 
     Min(TTD_ATTN) as TTD_ATTN_Min, 
     Avg(TTD_ATTN) as TTD_ATTN_Avg, 
     Median(TTD_ATTN) as TTD_ATTN_Med, 
     StdDev(TTD_ATTN) as TTD_ATTN_StdDev, 
     Max(COMPONENT_NO) as COMPONENT_NO, 
     DATAMONTH, 
     CHANNEL_ID||'_'||POSITION_ID as CHANNEL_POSITION,  
     CHANNEL_NAME||'_'||POSITION_NAME as CHANNEL_POSITION_NAME 
from  SCNCAAF0461A1894981868ABA.PB36E6D13A82C4609B9488950 
Group By COMPONENT_ID, 
     COMPONENT_NAME, 
     POSITION_ID, 
     POSITION_NAME, 
     CHANNEL_ID, 
     CHANNEL_NAME, 
     DATAMONTH 

但對於SQL Server時,收到錯誤

Select COMPONENT_ID, 
     COMPONENT_NAME, 
     POSITION_ID, 
     POSITION_NAME, 
     CHANNEL_ID, 
     CHANNEL_NAME, 
     max(METRIC) AS METRIC, 
     max(TTD_ATTN) AS TTD_ATTN_Max, 
     min(TTD_ATTN) AS TTD_ATTN_Min, 
     avg(TTD_ATTN) AS TTD_ATTN_Avg, 
     Median(TTD_ATTN) AS TTD_ATTN_Med, 
     stdev(TTD_ATTN) AS TTD_ATTN_StdDev, 
     max(COMPONENT_NO) AS COMPONENT_NO, 
     DATAMONTH, 
     ISNULL(CHANNEL_ID, '') + '_' + ISNULL(POSITION_ID, '') AS CHANNEL_POSITION, 
     ISNULL(CHANNEL_NAME, '') + '_' + ISNULL(POSITION_NAME, '') AS CHANNEL_POSITION_NAME 
from  SCNCAAF0461A1894981868ABA.PB36E6D13A82C4609B9488950 
Group By COMPONENT_ID,  
     COMPONENT_NAME, 
     POSITION_ID, 
     POSITION_NAME, 
     CHANNEL_ID, 
     CHANNEL_NAME, 
     DATAMONTH 

錯誤:Select語句無法正確解析.output表不能生成。

我認爲他們是中值函數的問題。任何人都可以幫忙嗎?

+2

據我所知,SQL Server不支持MEDIAN,至少不是直接作爲一個函數(當然,你可以使用SQL以某種方式計算中位數)。 – 2012-02-06 13:12:22

+1

[函數來計算在Sql Server中的中位數](http://stackoverflow.com/questions/1342898/function-to-calculate-median-in-sql-server) – 2012-02-06 13:15:31

回答