一个查询中为何group by一个boolean类型就出错 (100分)

  • 主题发起人 主题发起人 悲酥清风`
  • 开始时间 开始时间

悲酥清风`

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(!]
SELECT DepartmentID, HRTrainCurriculumID, COUNT(EmployeeID) AS Qty,
SUM(HRTrainFee) AS Money, HRTrainCurriculumAddress,
HRTrainCurriculumBeginDate, HRTrainCurriculumEndDate, HRTrainCurriculumTime,
HRTrainCurriculumName
FROM HRTrainMFee
GROUP BY DepartmentID, HRTrainCurriculumID, HRTrainCurriculumAddress,
HRTrainCurriculumBeginDate, HRTrainCurriculumEndDate, HRTrainCurriculumTime,
HRTrainCurriculumName
*****************************以上是对的
SELECT DepartmentID, HRTrainCurriculumID, COUNT(EmployeeID) AS Qty,
SUM(HRTrainFee) AS Money, HRTrainCurriculumAddress,
HRTrainCurriculumBeginDate, HRTrainCurriculumEndDate, HRTrainCurriculumTime,
HRTrainCurriculumName,[red] HRTrainUseCoFee[/red]
FROM HRTrainMFee
GROUP BY DepartmentID, HRTrainCurriculumID, HRTrainCurriculumAddress,
HRTrainCurriculumBeginDate, HRTrainCurriculumEndDate, HRTrainCurriculumTime,
HRTrainCurriculumName, [red]HRTrainUseCoFee[/red]
**********以上加入了HRTrainUseCoFee布尔字段就出错
 
不会吧?
我特地为你在Access里面实验了一下,其中Col2是Boolean字段
select col1,col2 from test1 group by Col1,col2
select col2 from test1 group by Col2
都没有问题。
select col1,col2 from test1 group by col2这会出问题,不过,是正常的,
Select 的东西必须是group by后面的。
 
这样也没错呀!
select count(col1) as a,sum(col2) as b from test1 group by col1,col2
 
我也奇怪,我是在sql server中的,不过HRTrainMFee也是个查询,不会和这个有关吧
 
我给你实验一下。
 
实验结果,你所说的Boolean类型在SQL Server上找不到呀,是不是bit类型?
如果是,可以接着看下去
没问题的语句:
select col1,col2 as b from test1 group by col1,col2

有问题的语句:
select count(col1) as a,sum(col2) as b from test1 group by col1,col2
服务器: 消息 409,级别 16,状态 2,行 1
sum or average aggregate 运算不能以 bit 数据类型作为参数。
 
对了,你的也不是呀,下面两句都行的通!
select sum(col1),col2 as b from test1 group by col1,col2
select count(col1),col2 as b from test1 group by col1,col2
找别的问题吧。[:)]
 
唉,真头痛呀[:(!]
 
单独拿出来,在SQL分析器里面执行,逐步去掉多余的字段,最后定位问题原因。
 
不知你用的是什么数据库,如果是SQL Server ,它是不能对一个BIT类型进行GROUP BY 操作的!
 
可以进行Group by操作的,我刚刚实验的!
 
单独用HRTrainUseCoFee来GROUP BY可以吗?
如果可以,那定是HRTrainUseCoFee和其他的在GROUP BY列表中的其他字段的值有冲突了
不知道你的具体结果和数据,建议一个个筛选
 
刚刚试了下,真的不行:
select count(*) from t_expert
group by sex

提示:
Server: Msg 252, Level 16, State 2, Line 1
Cannot group by a bit column.

但可以这样:
select count(*) from t_expert
group by
(case sex
when 1 then 1
when 0 then 0
end
)

其中sex是bit类型的字段
 
忘了说明,是在sql server中
 
不能在sql server 中使用boolean類型做group by,我做過
 
不能在sql server 中用boolean類型值做group by
 
哪。。。。。怎么办,这个字段不能不要呀
 
我在SQL Server2000个人版中,下面语句(Col2是bit类型)完全可以呀!
select count(*) from test1 group by col2
我马上就到SQL Servcer 7.0上实验。
 
但可以这样:
select count(*) from t_expert
group by
(case sex
when 1 then 1
when 0 then 0
end
)

其中sex是bit类型的字段
 
后退
顶部