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

请问一个统计类的SQL语句,希望大家帮忙分析上这么写

2013-02-15 
请教一个统计类的SQL语句,希望大家帮忙分析下这么写。现在有一个这样的表,如下id(唯一编号)name(名称)type(

请教一个统计类的SQL语句,希望大家帮忙分析下这么写。
现在有一个这样的表,如下

id(唯一编号)   name(名称)   type(所属类型)   

1              水果              1   

2              苹果              1   

3              香蕉              1   

4              玩具              4   

5              泰迪熊            4   

6              变形金刚          4   

7              流氓兔            4   

要求统计后,是大类的,后面显示小类品种的总数,如果是小类,后面就是大类的名称,要求最后的查询如下

id(唯一编号)   name(名称)   数量或类型   

1               水果            2   

2               苹果            水果   

3               香蕉            水果   

4               玩具            3   

5               泰迪熊          玩具   

6               变形金刚        玩具   

7               流氓兔          玩具   



各位高手帮忙分析下,这个SQL语句应该怎么写啊,谢谢!!!


[解决办法]

USE test
GO


-->生成表tb

if object_id('tb') is not null 
drop table tb
Go
Create table tb([id] smallint,[name] nvarchar(4),[type] smallint)
Insert into tb
Select 1,N'水果',1
Union all Select 2,N'苹果',1
Union all Select 3,N'香蕉',1
Union all Select 4,N'玩具',4
Union all Select 5,N'泰迪熊',4
Union all Select 6,N'变形金刚',4
Union all Select 7,N'流氓兔',4


--------------- 1.

SELECT   
b.idAS [唯一编号]
,b.name AS [名称]
,CASE WHEN b.id<>b.type THEN a.name ELSE LTRIM((SELECT COUNT(1) FROM tb AS x WHERE x.type=a.id AND x.id<>a.id)) END AS [数量或类型] 


FROM tb AS a
LEFT JOIN tb AS b ON a.id=b.type
WHERE a.id=a.type
ORDER BY [唯一编号]
/*
唯一编号   名称   数量或类型
------ ---- ------------
1      水果   2
2      苹果   水果
3      香蕉   水果
4      玩具   3
5      泰迪熊  玩具
6      变形金刚 玩具
7      流氓兔  玩具
*/

--------------- 2.

SELECT 
idAS [唯一编号]
,nameAS [名称]
,LTRIM((SELECT COUNT(1) FROM tb AS x WHERE x.type=a.id AND x.id<>a.id)) AS [数量或类型] 
FROM tb AS a
WHERE a.id=a.type
UNION ALL
SELECT 
b.id
,b.name
,a.name
FROM tb AS a,tb AS b 
WHERE a.id=b.type
AND a.id<>b.id
AND a.id=a.type
ORDER BY [唯一编号]

/*
唯一编号   名称   数量或类型
------ ---- ------------
1      水果   2
2      苹果   水果
3      香蕉   水果
4      玩具   3
5      泰迪熊  玩具
6      变形金刚 玩具
7      流氓兔  玩具
*/

热点排行