日期:2014-05-18  浏览次数:20976 次

关于每个GROUPBY表达式必须至少包含一个不是外部引用的列
我现在有个表smaple
  name aType bType cType
-------------------------------
1. aa DA
2. b2 WK
3. cc DA
4. fea SS
5. wf DA
6. ei WK

现在我以aType分组统计数量,想得到这样子
--------------------------------------
3 DA
2 WK
1 SS

即@mmm='aType'

select count(*),@mmm
from T_TermDescofLD group by @mmm

但是就会报错“关于每个GROUPBY表达式必须至少包含一个不是外部引用的列”

因为列名不是固定的,列名只能是变量

请问大家怎么解决呢?




------解决方案--------------------
SQL code
--用动态


declare @sql varchar(max)
declare @mmm varchar(100)
set @mmm = 'atype'
set @sql = 'select count(*),'+@mmm+' from tb group by '+@mmm
exec(@sql)

------解决方案--------------------
SQL code

--动态sql
exec ('select count(*),'+@mmm+' from T_TermDescofLD group by '+@mmm)

------解决方案--------------------
while @@FETCH_STATUS=0
begin
insert #Temp(countNum,ruler)
exec ('select count(*),'+@mmm+' from T_TermDescofLD group by '+@mmm)
FETCH next from cur_colName INTO @mmm
end