2016-10-17 104 views
-3
附近的語法不正確

我是Microsoft Visual Studio 2008中的新手。我有一個SQL查詢,它顯示瞭解決每個員工解決每個請求的時間問題。數據庫是在Windows Server的Microsoft SQL Server 2008SQL查詢中的錯誤

我想找到一個數字,已經得到了解決在6小時以下以百分比計算,也每一位員工的所有解決請求的總和請求

低於和高於6小時的時間爲

這是我的SQL查詢,但同時它的工作原理是產生一個錯誤:

Incorrect syntax near '>' Incorrect syntax near 'tmp_table.'

SQL查詢:

SELECT id, fio, date_s, tline 
     , (cast (tline as int) > 6) as 'tv' 
     , count (distinct id) as 'cid' 
FROM(SELECT id, fio, date_s 
    , dbo.get_work_time(date_s, date_f, '12345', '09:00', '18:00', '0')/60 AS 'tline' 
    FROM Zno_speed WHERE (date_f > @date) 
    GROUP BY fio 
) tmp_table 
GROUP BY id, fio, date_s, tline, (cast (tline as int) > 6) 
+2

'但同時它的工作原理是產生error' - 究竟是如何,如果它產生的錯誤操作呢......? – Siyual

+0

只需在tmp_table之前添加'AS'關鍵字即可。即as tmp_table –

+0

ANSI SQL對於分隔標識符具有雙引號,例如, '「tline」',SQL Server也支持方括號,例如'[TLINE]'。 – jarlh

回答

1

SQL Server沒有一個真正的布爾數據類型,因此不支持布爾表達式如cast (tline as int) > 6

您需要將其重寫爲case語句:

case when cast (tline as int) > 6 then 1 else 0 end as tv 
1

使用CASE WHEN(cast (tline as int) > 6)

CASE 
    WHEN (cast (tline as int) > 6) THEN 'Your Text' 
    ELSE 'Your Text' END