2016-10-17 102 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