这个问题有点复杂!!

loen113 2009-03-17 09:43:50
表a

货号 颜色 箱号 重量
001 红色 1 20
001 红色 2 40
001 红色 3 10
001 红色 4 23
001 红色 5 32
001 红色 6 45

001 黑色 4 23
001 黑色 5 32
001 白色 6 45
001 绿色 7 43
... ... .. ...

想得到以下
货号 颜色 箱号1 重量 箱号2 重量 箱号3 重量 箱号4 重量
001 红色 1 20 2 40 3 10 4 23
001 红色 5 32 6 45
001 黑色 4 23 5 32
001 白色 6 45
001 绿色 7 43

顺便问下,哪里有做DELPHI动态报表的例子,想学习下











...全文
110 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Teng_s2000 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jinjazz 的回复:]
行列转换,搜索一大堆
[/Quote]

UP
百年树人 2009-03-17
  • 打赏
  • 举报
回复
---测试数据---
if object_id('[a]') is not null drop table [a]
go
create table [a]([货号] varchar(3),[颜色] varchar(4),[箱号] int,[重量] int)
insert [a]
select '001','红色',1,20 union all
select '001','红色',2,40 union all
select '001','红色',3,10 union all
select '001','红色',4,23 union all
select '001','红色',5,32 union all
select '001','红色',6,45 union all
select '001','黑色',4,23 union all
select '001','黑色',5,32 union all
select '001','白色',6,45 union all
select '001','绿色',7,43

---查询---
select a1.货号,a1.颜色,a1.箱号 as 箱号1,a1.重量,a2.箱号 as 箱号2,a2.重量,a3.箱号 as 箱号3,a3.重量,a4.箱号 as 箱号4,a4.重量
from
(select * from(select *,px=(select count(1)+1 from a where 颜色=ta.颜色 and 箱号<ta.箱号) from a ta) tb where px%4=1) a1
left join
(select * from(select *,px=(select count(1)+1 from a where 颜色=ta.颜色 and 箱号<ta.箱号) from a ta) tb where px%4=2) a2
on a1.货号=a2.货号 and a1.颜色=a2.颜色 and a2.px=a1.px+1
left join
(select * from(select *,px=(select count(1)+1 from a where 颜色=ta.颜色 and 箱号<ta.箱号) from a ta) tb where px%4=3) a3
on a1.货号=a3.货号 and a1.颜色=a3.颜色 and a3.px=a1.px+2
left join
(select * from(select *,px=(select count(1)+1 from a where 颜色=ta.颜色 and 箱号<ta.箱号) from a ta) tb where px%4=0) a4
on a1.货号=a4.货号 and a1.颜色=a4.颜色 and a4.px=a1.px+3

---结果---
货号 颜色 箱号1 重量 箱号2 重量 箱号3 重量 箱号4 重量
---- ---- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
001 红色 1 20 2 40 3 10 4 23
001 红色 5 32 6 45 NULL NULL NULL NULL
001 黑色 4 23 5 32 NULL NULL NULL NULL
001 白色 6 45 NULL NULL NULL NULL NULL NULL
001 绿色 7 43 NULL NULL NULL NULL NULL NULL

(所影响的行数为 5 行)
loen113 2009-03-17
  • 打赏
  • 举报
回复
货号 颜色 箱号1 重量 箱号2 重量 箱号3 重量 箱号4 重量
001 红色 1 20 2 40 3 10 4 23
001 红色 5 32 6 45
001 黑色 4 23 5 32
001 白色 6 45
001 绿色 7 43
箱号1至箱号4都是从表A的箱号获取的
dawugui 2009-03-17
  • 打赏
  • 举报
回复
create table tb(货号 varchar(10), 颜色 varchar(10), 箱号 int, 重量 int)
insert into tb values('001' , '红色' , 1 , 20 )
insert into tb values('001' , '红色' , 2 , 40 )
insert into tb values('001' , '红色' , 3 , 10 )
insert into tb values('001' , '红色' , 4 , 23 )
insert into tb values('001' , '红色' , 5 , 32 )
insert into tb values('001' , '红色' , 6 , 45 )
insert into tb values('001' , '黑色' , 4 , 23 )
insert into tb values('001' , '黑色' , 5 , 32 )
insert into tb values('001' , '白色' , 6 , 45 )
insert into tb values('001' , '绿色' , 7 , 43 )
go

select 货号 , 颜色,
max(case (px - 1)%4 when 0 then 箱号 end) 箱号1,
max(case (px - 1)%4 when 0 then 重量 end) 重量1,
max(case (px - 1)%4 when 1 then 箱号 end) 箱号2,
max(case (px - 1)%4 when 1 then 重量 end) 重量2,
max(case (px - 1)%4 when 2 then 箱号 end) 箱号3,
max(case (px - 1)%4 when 2 then 重量 end) 重量3,
max(case (px - 1)%4 when 3 then 箱号 end) 箱号4,
max(case (px - 1)%4 when 3 then 重量 end) 重量4
from
(
select * , px = (select count(1) from tb where 货号 = t.货号 and 颜色 = t.颜色 and 箱号 < t.箱号) + 1 from tb t
) m
group by 货号 , 颜色 , (px - 1)/4
order by 货号 , 颜色

drop table tb

/*
货号 颜色 箱号1 重量1 箱号2 重量2 箱号3 重量3 箱号4 重量4
---------- ---------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
001 白色 6 45 NULL NULL NULL NULL NULL NULL
001 黑色 4 23 5 32 NULL NULL NULL NULL
001 红色 1 20 2 40 3 10 4 23
001 红色 5 32 6 45 NULL NULL NULL NULL
001 绿色 7 43 NULL NULL NULL NULL NULL NULL

(所影响的行数为 5 行)
*/
jinjazz 2009-03-17
  • 打赏
  • 举报
回复
但不知道你的箱号1这列的数据怎么来的,你的结果太乱了
jinjazz 2009-03-17
  • 打赏
  • 举报
回复
行列转换,搜索一大堆
内容概要:本文围绕水陆两栖无人机的任务规划与执行问题,提出了一种基于Matlab实现的智能路径规划解决方案,重点融合粒子群优化算法(PSO)与遗传算法(GA)进行三维环境下的避障路径规划。研究系统性地构建了从复杂地形建模、任务需求分析到算法设计与仿真实验的完整流程,实现了在多约束、动态障碍物等复杂环境下无人机的高效任务调度。通过对GA与PSO两种智能优化算法在路径长度、收敛速度、路径平滑度及稳定性等方面的对比分析,深入探讨了各自在无人机路径规划中的适用场景与性能差异,验证了所提方法在提升任务执行效率与安全性方面的有效性。该方案不仅适用于水陆交互通用场景,也为多模态无人系统自主导航提供了可扩展的技术框架。; 适合人群:具备一定Matlab编程能力和算法基础,从事无人机路径规划、智能优化算法研究、自动化控制或相关领域科研工作的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于水陆两栖无人机在复杂自然环境(如江河湖海与陆地交错区域)中的自主巡航与任务执行;②比较遗传算法与粒子群算法在三维动态路径规划中的优化性能,指导实际工程中算法选型;③为多约束条件下无人系统的自主决策与实时避障提供算法支持与仿真验证平台。; 阅读建议:建议读者结合提供的Matlab代码进行动手实践,重点关注两种算法的数学建模过程、适应度函数设计、参数调优策略及路径生成逻辑,通过仿真实验直观对比算法性能差异,深入理解智能优化算法在复杂路径规划问题中的应用机制与优化潜力。

22,296

社区成员

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

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