首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

问一个SQL语句 多谢

2012-01-24 
问一个SQL语句 谢谢一张表:字段:id,aa可能包含的数据值:m,n,o,pida各个字段都是有可能重复的,我想查询出的

问一个SQL语句 谢谢
一张表:
字段:
id,a

a可能包含的数据值:   m,n,o,p

id   a   各个字段都是有可能重复的,我想查询出的结果是

unique(id),   count(m),count(n),count(o),count(p)

也就是对ID分组,并对字段a中的值分组,且对字段A中出现值的数量进行统计,不知道有什么好的方法吗?   谢谢!

[解决办法]

Select
id,
SUM(Case a When 'm ' Then 1 Else 0 End)As m,
SUM(Case a When 'n ' Then 1 Else 0 End)As n,
SUM(Case a When 'o ' Then 1 Else 0 End)As o,
SUM(Case a When 'p ' Then 1 Else 0 End)As p
From

Group By
id
[解决办法]

--建立测试数据
CREATE TABLE tb_a(ID INT,intString VARCHAR(50))
INSERT tb_a
SELECT 1, 'm,n,o,p ' UNION ALL
SELECT 1, 'm,o,p ' UNION ALL
SELECT 1, 'm,n,p 'UNION ALL
SELECT 2, 'm,p ' UNION ALL
SELECT 3, 'p ' UNION ALL
SELECT 3, 'm,n,o,p ' UNION ALL
SELECT 3, 'm,o,p '
GO

SELECT id,
countm=sum(case when charindex( ',m, ', ', '+intString+ ', ')> 0 then 1 else 0 end),
countn=sum(case when charindex( ',n, ', ', '+intString+ ', ')> 0 then 1 else 0 end),
counto=sum(case when charindex( ',o, ', ', '+intString+ ', ')> 0 then 1 else 0 end),
countp=sum(case when charindex( ',p, ', ', '+intString+ ', ')> 0 then 1 else 0 end)
FROM tb_a
group by id

热点排行
Bad Request.