sql语法不适用于group by子句

sql语法不适用于group by子句,sql,sql-server,Sql,Sql Server,我正在编写sql,我被困在下面的行中 select employeeid, (case paidL when'1' Then 1 when '0' Then 0

我正在编写sql,我被困在下面的行中

    select employeeid, (case paidL when'1' 
                               Then
                               1
                                   when '0'
                               Then
                               0
                               end) as 'paidLeave' from Lea order by employeeid group by 'paidLeave'                         
如果给我与“paidLeave”相关的错误,则上面的行


任何有助于改进语法以消除错误的帮助都将受到赞赏

如果您的案例语法完全错误,请使用以下命令:

 select employeeid, (case when paidL  = '1' 
                          Then 1
                          when paidL = '0'
                          Then  0
                    end) as paidLeave 
 from Lea   
 order by employeeid    
而且,订单在分组之后

另外,引号用于字符串,而不是列名。也许你的意思是“但你不必这么做,因为这不是一个保留字。”

整个查询似乎都是错误的,如果您有一个以上的员工,那么group by就没有任何意义,也许您的意思是按emplooyeid分组并按paidleave排序

也许您想按员工id分组并选择maximm paidLeave?在这种情况下:

 select employeeid, max((case when paidL  = '1' 
                          Then 1
                          when paidL = '0'
                          Then  0
                    end)) as paidLeave 
 from Lea   
 group by employeeid 
 order by employeeid

您的案例语法完全错误,请使用以下命令:

 select employeeid, (case when paidL  = '1' 
                          Then 1
                          when paidL = '0'
                          Then  0
                    end) as paidLeave 
 from Lea   
 order by employeeid    
而且,订单在分组之后

另外,引号用于字符串,而不是列名。也许你的意思是“但你不必这么做,因为这不是一个保留字。”

整个查询似乎都是错误的,如果您有一个以上的员工,那么group by就没有任何意义,也许您的意思是按emplooyeid分组并按paidleave排序

也许您想按员工id分组并选择maximm paidLeave?在这种情况下:

 select employeeid, max((case when paidL  = '1' 
                          Then 1
                          when paidL = '0'
                          Then  0
                    end)) as paidLeave 
 from Lea   
 group by employeeid 
 order by employeeid
语法不正确,应遵循格式

CASE WHEN <condition> THEN <result> ... (multiples of WHEN ... THEN ...) ELSE <result> END [Alias] 语法不正确,应遵循格式

CASE WHEN <condition> THEN <result> ... (multiples of WHEN ... THEN ...) ELSE <result> END [Alias]
您的case语法显然是错误的。但您还有另一个错误:永远不要对列别名使用单引号。这是一个等待发生的错误示例

最好使用不需要转义的列名和表名。如果有,请使用方括号或双引号

所需的查询应如下所示:

select employeeid, 
       (case when paidL = '1' then 1
             when paidl = '0 then 0
        end) as paidLeave
from Lea
order by employeeid;
我不知道“paidleave”分组应该做什么。这在两个方面都是语法错误的。如果需要求和,则查询如下:

select employeeid, 
       sum(case when paidL = '1' then 1
                when paidl = '0 then 0
           end) as paidLeave
from Lea
group by employeeid;

我认为您需要学习基本的SQL语法。网络和书籍中有很多资源。

您的案例语法显然是错误的。但您还有另一个错误:永远不要对列别名使用单引号。这是一个等待发生的错误示例

最好使用不需要转义的列名和表名。如果有,请使用方括号或双引号

所需的查询应如下所示:

select employeeid, 
       (case when paidL = '1' then 1
             when paidl = '0 then 0
        end) as paidLeave
from Lea
order by employeeid;
我不知道“paidleave”分组应该做什么。这在两个方面都是语法错误的。如果需要求和,则查询如下:

select employeeid, 
       sum(case when paidL = '1' then 1
                when paidl = '0 then 0
           end) as paidLeave
from Lea
group by employeeid;

我认为您需要学习基本的SQL语法。网络和书籍中有很多资源。

首先,为了更好地帮助您,您应该提供错误信息。但是,乍一看,我会说您的错误是,您没有将
employeeid
列作为
分组依据的一部分。此外,我不会使用
CASE
语句来解决一些可以通过强制转换解决的问题。您可以
CAST
paidL
列转换为
INT
BIT
(只要值仅为0/1)


首先,为了更好地帮助您,您应该提供错误。但是,乍一看,我会说您的错误是,您没有将
employeeid
列作为
分组依据的一部分。此外,我不会使用
CASE
语句来解决一些可以通过强制转换解决的问题。您可以
CAST
paidL
列转换为
INT
BIT
(只要值仅为0/1)


您的
大小写
语法错误。提示:
case
表达式以
case
开头,而不是
时。即使您以编码的方式修复了case表达式,它也会尝试按字符串文字“paidLeave”分组。有关详细信息,请参阅syntax@GordonLinoff我更正了代码,但你指出的是我在解决我的问题你修正了case表达式,现在,在列名和分组依据中删除别名周围的无意义引号。您的
大小写
语法错误。提示:
case
表达式以
case
开头,而不是
时。即使您以编码的方式修复了case表达式,它也会尝试按字符串文字“paidLeave”分组。有关详细信息,请参阅syntax@GordonLinoff我更正了代码,但你指出的是我在解决我的问题你修正了case表达式,现在,在列名和分组人中删除你别名周围的无意义引号。我做了,我回答了你的问题@AlexI做了,我回答了你的问题@AlexI为什么这个答案得到了3张赞成票,而我们的答案基本相同,我先回答了?@sagi你的答案在5分钟前还不完整,戈登在那里更快地得到了更多的信息……就这么简单。就我个人而言,我不习惯用勺子喂OP,只给他们足够的时间自己解决它。@Lankymart我的答案更完整了5分钟,我编辑了大约4次这个问题,所以看起来就像所有的编辑都是同时完成的!为什么这个答案得到了3张赞成票,而我们的答案基本相同,我是第一个回答的?@sagi你的答案在5分钟前还不够完整,戈登在那里更快地获得了更多信息……就这么简单。就我个人而言,我不习惯用勺子喂OP,只给他们足够的时间自己解决它。@Lankymart我的答案更完整了5分钟,我编辑了大约4次这个问题,所以看起来就像所有的编辑都是同时完成的!