一个特殊的行列转换问题

问题来自优快云,http://community.youkuaiyun.com/Expert/topic/5335/5335373.xml?temp=.9038813:

表A
F_type F_Price1 F_price2
普通 10 5
金卡 9 4
银卡 8 3

表B
F_bookname F_bookNum1 F_bookNum2
AAA 1 0
BBB 2 3
CCC 3 5

表C
F_Code F_Spec
001 螺丝
002 钉子

要求按表A中F_price1和F_price2中的值动态生成列
并把同样价格的放在与价格对应的列中,结果如下:
(备注:几个表中没有字段关联,但是表C两条记录是不变的,表C中的记录001对应表B中的F_Booknum1,F_bookNum1与表AF_Price1,记录2也是一样的)
其实表A和表C的主要就是为了动态生成列,表B是销售表,统计下哪种价格卖了多少!请大家帮忙!

螺丝|10元 螺丝|9元 螺丝|8元 钉子|5元 钉子|4元 钉子|3元
1 2 3 0 3 5


下面是建表语句:
create table A(F_type varchar(10), F_Price1 int, F_price2 int)
insert A select '普通', 10, 5
union all select '金卡', 9, 4
union all select '银卡', 8, 3
create table B(F_bookname varchar(10), F_bookNum1 int, F_bookNum2 int)
insert B select 'AAA', 1, 0
union all select 'BBB', 2, 3
union all select 'CCC', 3, 5
create table C(F_code varchar(10), F_spec varchar(10))
insert C select '001','螺丝'
union all select '002','钉子'

看得比较晕,但仔细看一下要求,问题还是可以解决的,如:

create table A(F_type varchar(10), F_Price1 int, F_price2 int)
insert A select '普通', 10, 5
union all select '金卡', 9, 4
union all select '银卡', 8, 3
create table B(F_bookname varchar(10), F_bookNum1 int, F_bookNum2 int)
insert B select 'AAA', 1, 0
union all select 'BBB', 2, 3
union all select 'CCC', 3, 5
create table C(F_code varchar(10), F_spec varchar(10))
insert C select '001','螺丝'
union all select '002','钉子'

DECLARE @Sql nvarchar(4000)
SELECT IDENTITY(int,1,1) AS [ID],F_spec,CASE F_spec WHEN '螺丝' THEN F_Price1 ELSE F_Price2 END AS F_Price INTO #T1 FROM C LEFT OUTER JOIN A ON 1=1
SELECT IDENTITY(int,1,1) AS [ID],F_spec,CASE F_spec WHEN '螺丝' THEN F_Booknum1 ELSE F_Booknum2 END AS F_Booknum INTO #T2 FROM C LEFT OUTER JOIN B ON 1=1
SET @Sql='SELECT '
SELECT @Sql=@Sql+CAST(B.F_Booknum AS nvarchar(20))+ ' AS '''+A.F_spec+'|'+CAST(A.F_Price AS nvarchar(20))+'元'','

FROM #T1 AS A INNER JOIN #T2 AS B ON A.[ID]=B.[ID]
SET @Sql=LEFT(@Sql,LEN(@Sql)-1)
EXECUTE( @Sql)
DROP TABLE A,B,C,#T1,#T2

/*
螺丝|10元 螺丝|9元 螺丝|8元 钉子|5元 钉子|4元 钉子|3元
1 2 3 0 3 5
*/

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7764484/viewspace-897059/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7764484/viewspace-897059/

同步定位与地图构建(SLAM)技术为移动机器人或自主载具在未知空间中的导航提供了核心支撑。借助该技术,机器人能够在探索过程中实时构建环境地图并确定自身位置。典型的SLAM流程涵盖传感器数据采集、数据处理、状态估计及地图生成等环节,其核心挑战在于有效处理定位与环境建模中的各类不确定性。 Matlab作为工程计算与数据可视化领域广泛应用的数学软件,具备丰富的内置函数与专用工具箱,尤其适用于算法开发与仿真验证。在SLAM研究方面,Matlab可用于模拟传感器输出、实现定位建图算法,并进系统性能评估。其仿真环境能显著降低实验成本,加速算法开发与验证周期。 本次“SLAM-基于Matlab的同步定位与建图仿真实践项目”通过Matlab平台完整再现了SLAM的关键流程,包括数据采集、滤波估计、特征提取、数据关联与地图更新等核心模块。该项目不仅呈现了SLAM技术的实际应用场景,更为机器人导航与自主移动领域的研究人员提供了系统的实践参考。 项目涉及的核心技术要点主要包括:传感器模型(如激光雷达与视觉传感器)的建立与应用、特征匹配与数据关联方法、滤波器设计(如扩展卡尔曼滤波与粒子滤波)、图优化框架(如GTSAM与Ceres Solver)以及路径规划与避障策略。通过项目实践,参与者可深入掌握SLAM算法的实现原理,并提升相关算法的设计与调试能力。 该项目同时注重理论向工程实践的转化,为机器人技术领域的学习者提供了宝贵的实操经验。Matlab仿真环境将复杂的技术问题可视化与可操作化,显著降低了学习门槛,提升了学习效率与质量。 实践过程中,学习者将直面SLAM技术在实际应用中遇到的典型问题,包括传感器误差补偿、动态环境下的建图定位挑战以及计算资源优化等。这些问题的解决对推动SLAM技术的产业化应用具有重要价值。 SLAM技术在工业自动化、服务机器人、自动驾驶及无人机等领域的应用前景广阔。掌握该项技术不仅有助于提升个人专业能力,也为相关业的技术发展提供了重要支撑。随着技术进步与应用场景的持续拓展,SLAM技术的重要性将日益凸显。 本实践项目作为综合性学习资源,为机器人技术领域的专业人员提供了深入研习SLAM技术的实践平台。通过Matlab这一高效工具,参与者能够直观理解SLAM的实现过程,掌握关键算法,并将理论知识系统应用于实际工程问题的解决之中。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值