一段SQL问题...求教

ljfdd 2004-12-28 11:48:33
declare @sql nvarchar(4000)

declare @temp nvarchar(8)

set @sql = ' select ' + @temp + ' = 数量 ,'

select @sql = @sql +' , ''' + b.人员类型 + ' / ' + b.性別 + ''' '
from (select * from tb1
where 数量 = @temp ) as b

set @sql = @sql + ' from tb1 a '

exec(@sql)
我的意图是,把检索出来的数量寸在变量@temp中,
然后在下边使用@temp得到其他信息
可是不知道
set @sql = ' select ' + @temp + ' = 数量 ,'
这么写可行么.
...全文
164 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljfdd 2004-12-28
  • 打赏
  • 举报
回复
我对SQL不是很在行,
具体怎么实现
ljfdd 2004-12-28
  • 打赏
  • 举报
回复
是为了显示.是没什么其他用途.
dulei115 2004-12-28
  • 打赏
  • 举报
回复
你的结果是为了显示还是其它?如果只是为了显示,可以让他这样显示,这样就简单多了,而且我看不出你那样的结果除了显示外还有其它什么用处

名称 人员类型/性别/人数
19s101 大人/男/4
19s101 大人/男/4 大人/女/2 小孩/其他/3
11w201 大人/男/2
11w201 大人/男/2
ljfdd 2004-12-28
  • 打赏
  • 举报
回复
我已经开一个贴子了,在发一次
表结构如下:
库号 名称 分配号码 人员类型 性别 人员数
03 19S101 001 大人 男 4
03 19S101 002 大人 男 4
03 19S101 002 大人 女 2
03 19S101 002 小孩 其他 3
03 11W201 001 大人 男 2
03 11W201 002 大人 男 2
希望得到如下结果:
名称 人员类型/性别 人数 人员类型/性别 人数 人员类型/性别 人数
19s101 大人/ 男 4
19s101 大人/ 男 4 大人/ 女 2 小孩/其他 3
11w201 大人/ 男 2
11w201 大人/ 男 2

难点在于,名称和分配号码相同的要把他们的人员类型/性别 人数合并成一条数据.
比如说 名称:19s101 分配号码:002
03 19S101 002 大人 男 4
03 19S101 002 大人 女 2
03 19S101 002 小孩 其他 3
这三条数据合并成

19s101 大人/ 男 4 大人/ 女 2 小孩/其他 3
其中按照名称和分配号码分组.
基本上就这些. 大家帮看看吧.
dulei115 2004-12-28
  • 打赏
  • 举报
回复
看不懂,干脆你将表的结构写出来,然后说明一下你的要求,想得到怎样的结果,我认为这样的效果会更好
ljfdd 2004-12-28
  • 打赏
  • 举报
回复
不是这么简单的,因为对应一个数量的有可能是多条人员类型/性別.
也就是说检索出来的列数是变动的.
写这个的目的是要把符合条件的多条合并成一条.一起输出.
lsxaa 2004-12-28
  • 打赏
  • 举报
回复
select @temp=数量,b.人员类型,b.性别
from (select * from tbl where 数量=@temp) as b
ljfdd 2004-12-28
  • 打赏
  • 举报
回复
恩..可以的.谢谢了.
ljfdd 2004-12-28
  • 打赏
  • 举报
回复
先谢谢了.我马上测试.
dulei115 2004-12-28
  • 打赏
  • 举报
回复
利用函数实现,下面的语句在查询分析器中测试通过
if object_id('tbl') is not null drop table tbl
create table tbl(库号 varchar(2), 名称 varchar(6), 分配号码 varchar(3),
人员类型 varchar(4), 性别 varchar(4), 人员数 int)
insert into tbl values('03', '19S101', '001', '大人', '男', 4)
insert into tbl values('03', '19S101', '002', '大人', '男', 4)
insert into tbl values('03', '19S101', '002', '大人', '女', 2)
insert into tbl values('03', '19S101', '002', '小孩', '其它', 3)
insert into tbl values('03', '11W201', '001', '大人', '男', 2)
insert into tbl values('03', '11W201', '002', '大人', '男', 2)

select * from tbl
/*
库号 名称 分配号码 人员类型 性别 人员数
03 19S101 001 大人 男 4
03 19S101 002 大人 男 4
03 19S101 002 大人 女 2
03 19S101 002 小孩 其它 3
03 11W201 001 大人 男 2
03 11W201 002 大人 男 2
*/
go
if object_id('dbo.sumstring') is not null drop function sumstring
go
create function sumstring(@name varchar(6), @no varchar(3))
returns varchar(100)
as
begin
declare @s varchar(100)
set @s = ''
select @s = @s + ' ' + 人员类型 + '/' + 性别 + '/' + cast(人员数 as varchar(20))
from tbl
where 名称 = @name and 分配号码 = @no
return ltrim(@s)
end
go
select 名称, 分配号码, dbo.sumstring(名称, 分配号码) as [人员类型/性别/人数]
from tbl
group by 名称, 分配号码
/*
名称 分配号码 人员类型/性别/人数
11W201 001 大人/男/2
11W201 002 大人/男/2
19S101 001 大人/男/4
19S101 002 大人/男/4 大人/女/2 小孩/其它/3
*/

drop function sumstring
drop table tbl



*************************************************************************
*************************************************************************
实际应用中先创建一个函数
create function sumstring(@name varchar(6), @no varchar(3))
returns varchar(100)
as
begin
declare @s varchar(100)
set @s = ''
select @s = @s + ' ' + 人员类型 + '/' + 性别 + '/' + cast(人员数 as varchar(20))
from tbl
where 名称 = @name and 分配号码 = @no
return ltrim(@s)
end

然后通过下面的SQL语句得到结果
select 名称, 分配号码, dbo.sumstring(名称, 分配号码) as [人员类型/性别/人数]
from tbl
group by 名称, 分配号码
dulei115 2004-12-28
  • 打赏
  • 举报
回复
利用函数实现,下面的语句在查询分析器中测试通过
if object_id('tbl') is not null drop table tbl
create table tbl(库号 varchar(2), 名称 varchar(6), 分配号码 varchar(3),
人员类型 varchar(4), 性别 varchar(4), 人员数 int)
insert into tbl values('03', '19S101', '001', '大人', '男', 4)
insert into tbl values('03', '19S101', '002', '大人', '男', 4)
insert into tbl values('03', '19S101', '002', '大人', '女', 2)
insert into tbl values('03', '19S101', '002', '小孩', '其它', 3)
insert into tbl values('03', '11W201', '001', '大人', '男', 2)
insert into tbl values('03', '11W201', '002', '大人', '男', 2)

select * from tbl
/*
库号 名称 分配号码 人员类型 性别 人员数
03 19S101 001 大人 男 4
03 19S101 002 大人 男 4
03 19S101 002 大人 女 2
03 19S101 002 小孩 其它 3
03 11W201 001 大人 男 2
03 11W201 002 大人 男 2
*/
go
if object_id('dbo.sumstring') is not null drop function sumstring
go
create function sumstring(@name varchar(6), @no varchar(3))
returns varchar(100)
as
begin
declare @s varchar(100)
set @s = ''
select @s = @s + ' ' + 人员类型 + '/' + 性别 + '/' + cast(人员数 as varchar(20))
from tbl
where 名称 = @name and 分配号码 = @no
return ltrim(@s)
end
go
select 名称, 分配号码, dbo.sumstring(名称, 分配号码) as [人员类型/性别/人数]
from tbl
group by 名称, 分配号码
/*
名称 分配号码 人员类型/性别/人数
11W201 001 大人/男/2
11W201 002 大人/男/2
19S101 001 大人/男/4
19S101 002 大人/男/4 大人/女/2 小孩/其它/3
*/

drop function sumstring
drop table tbl



*************************************************************************
*************************************************************************
实际应用中先创建一个函数
create function sumstring(@name varchar(6), @no varchar(3))
returns varchar(100)
as
begin
declare @s varchar(100)
set @s = ''
select @s = @s + ' ' + 人员类型 + '/' + 性别 + '/' + cast(人员数 as varchar(20))
from tbl
where 名称 = @name and 分配号码 = @no
return ltrim(@s)
end
然后通过下面的SQL语句得到羯结果
select 名称, 分配号码, dbo.sumstring(名称, 分配号码) as [人员类型/性别/人数]
from tbl
group by 名称, 分配号码
内容概要:本文围绕“空地多无人平台协同路径规划技术”的论文复现展开,重点介绍了基于Matlab的多无人机与地面无人平台协同路径规划的算法实现与仿真研究。研究系统性地整合了无人机三维路径规划、动态避障、多机协同、任务分配及防撞机制等核心技术,结合智能优化算法(如遗传算法、粒子群算法、灰狼优化算法等)与经典路径规划模型(如Dubins路径、A*、RRT等),在复杂威胁环境下实现了高效、安全的协同路径规划。文中提供了完整的Matlab代码支持,便于科研人员进行算法验证、性能对比与二次开发,并强调通过复现高水平学术论文(如EI、SCI期刊及硕博论文)深入掌握该领域的前沿方法与技术路线。; 适合人群:具备一定Matlab编程基础,从事无人机系统、自动化控制、人工智能、路径规划等相关领域研究的研究生、科研人员及工程技术人员,尤其适用于正在开展科研项目、撰写学位论文或希望提升算法实践能力的研究者。; 使用场景及目标:① 复现并深入理解空地协同路径规划领域的高水平论文算法;② 掌握Matlab在多智能体路径规划中的建模、仿真与可视化方法;③ 应用于科研课题、毕业设计、项目申报及算法创新实践中,提升研究的技术深度与工程可行性。; 阅读建议:建议结合文中提供的网盘资源(含完整代码、仿真模型及参考文献资料)同步学习,优先选择与自身研究方向契合的案例进行复现,注重算法原理与代码实现之间的映射关系,并在掌握基础方案后尝试进行参数调优、算法融合或引入新约束条件以实现改进与创新。

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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