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

lenhorn 2013-01-23 04:26:44
现在有一个这样的表,如下

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语句应该怎么写啊,谢谢!!!

...全文
152 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shoppo0505 2013-01-23
  • 打赏
  • 举报
回复
with tb1 as ( select * from table where id <> type ) , tb2 as ( select * from table where id = type ) select tb1.id, tb1.name, tb2.name from tb1 inner join tb2 on tb1.type = tb2.id
我腫了 2013-01-23
  • 打赏
  • 举报
回复
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.id	AS [唯一编号]
		,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 
		id		AS [唯一编号]
		,name	AS [名称]
		,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      流氓兔  玩具
*/
catchdream 2013-01-23
  • 打赏
  • 举报
回复
你这个例子有问题吧,1和4是不是应该是另外一个表的记录(类型表)。还是难道同样类型(4)排第一个就代表类型名称?

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧