高难度查询需要斑竹支持

kkk3k3k 2005-03-10 08:48:32
表一
客户表:(树结构)

ID 父ID F1 F2 F3 F4 F5
1 0 公司一
2 1 公司二
3 1 公司三
4 0 公司四
5 4 公司五
6 4 公司六


标识号(自动生成) 父节点的ID号 F1 一级分类名称 F2 二级分类名称 ......


表二
销售单_主表
客户ID 销售时间 金额 .......



希望 一个查询返回某公司及其下属公司的全部销售记录



...全文
212 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2005-03-13
  • 打赏
  • 举报
回复
sql 2005中有直接的支持,等吧
kkk3k3k 2005-03-12
  • 打赏
  • 举报
回复
皱老大的方法的确可行 ,我用的也是类似的方法,不过我是在存储过程中用的是游标,
我想是否有基于集合的方法,子连接?不知道行不行 还请斑竹多多指教
zjcxc 2005-03-10
  • 打赏
  • 举报
回复
如果你要实现无限分级,估计没有更简单的了
ohui 2005-03-10
  • 打赏
  • 举报
回复
邹老大的太复杂。顶一下,看有没有其它简单的。
zjcxc 2005-03-10
  • 打赏
  • 举报
回复
--写一个处理函数
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_cid]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_cid]
GO

/*--树形数据处理

查询指定id的所有子

--邹建 2003-12(引用请保留此信息)--*/

/*--调用示例

--调用(查询所有的子)
select a.*,层次=b.[level] from 客户表 a,f_cid(2)b where a.ID=b.ID
--*/
create function f_cid(
@id int
)returns @re table(ID int,[level] int)
as
begin
declare @l int
set @l=0
insert @re select @id,@l
while @@rowcount>0
begin
set @l=@l+1
insert @re select a.ID,@l
from 客户表 a,@re b
where a.父ID=b.ID and b.[level]=@l-1
end
return
end
go

--调用函数实现查询,查询id=1的客户及其他所有下属
select a.*,b.*
from 客户表 a,销售单_主表 b,f_id(1)c
where a.ID=c.ID
and b.客户ID=c.ID
631799 2005-03-10
  • 打赏
  • 举报
回复
select a.*,b.* from 客户表 a left join
(select 客户ID,min(销售时间)+'-'+max(销售时间) as 时间段,sum(金额) from 销售单_主表 group by 客户ID) b on a.ID=b.客户ID

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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