SQL 不一样的行列转换新篇章,昨天凌晨想到点思路,还请教高手 50parse]

发布时间:2017-1-19 6:09:17 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"SQL 不一样的行列转换新篇章,昨天凌晨想到点思路,还请教高手 50parse]",主要涉及到SQL 不一样的行列转换新篇章,昨天凌晨想到点思路,还请教高手 50parse]方面的内容,对于SQL 不一样的行列转换新篇章,昨天凌晨想到点思路,还请教高手 50parse]感兴趣的同学可以参考一下。

create proc select_CGDD as select a.采购单编号, c.材料名,a.供应商编号,d.供应商名,a.员工编号,e.员工名,a.采购日期 from 采购订单 a,采购订单详情 b,材料 c, 供货商 d,员工 e where a.采购单编号 = b.采购单编号 and b.材料编号 = c.材料编号 and a.供应商编号= d.供应商编号 and a.员工编号=e.员工编号 go 其中的‘c.材料名’有5个数据(这是指包含null值在内的才有5个值)。 希望效果:   表A     --------- 变为 --------→     表B 材料名1                        材料名1  材料名2  材料名3 。。。。。 材料名2 材料名3    。    。    。 --//注意,上面的图是思维分析的,实际效果中,因为聚合值和其他数据在一起排列,我估计是会报错。 我想这里的‘c.材料名’应该称为一个聚合值,所以我想到用函数: create function fun3(@p1 varchar(32),@p2 varchar(32),@p3 varchar(32),@p4 varchar(32),@p5 varchar(32)) returns @tab_name table(f1 varchar,f2 varchar,f3 varchar,f4 varchar,f5 varchar) as begin insert @tab_name select @p1,@p2,@p3,@p4,@p5 return end 然后带入: create proc select_CGDD as select a.采购单编号, select * from fun3(c.材料名), a.供应商编号,d.供应商名,a.员工编号,e.员工名,a.采购日期 from 采购订单 a,采购订单详情 b,材料 c, 供货商 d,员工 e where a.采购单编号 = b.采购单编号 and b.材料编号 = c.材料编号 and a.供应商编号= d.供应商编号 and a.员工编号=e.员工编号 go 临时学的函数,可能理解不深,报错了。 请高手指点

我看了一些相关帖子,经常都是定义一个变量 varchar(8000) 之类==,但我这里是一个表中的一部分内容,并不是得出来的结果就是一行,还有其他数据。最麻烦就这里。 先顶一下,期待中........

没看懂, 难道不是这样吗? SLEECT 采购单编号, 供应商编号, 供应商名, 员工编号, 员工名, 采购日期, 材料名称1 = sum(case 材料名 when '材料名称1' then 1 else 0 end), 材料名称2 = sum(case 材料名 when '材料名称2' then 1 else 0 end), 材料名称3 = sum(case 材料名 when '材料名称3' then 1 else 0 end), 材料名称4 = sum(case 材料名 when '材料名称4' then 1 else 0 end), 材料名称5 = sum(case 材料名 when '材料名称5' then 1 else 0 end) FROM( select a.采购单编号, c.材料名,a.供应商编号,d.供应商名,a.员工编号,e.员工名,a.采购日期 from 采购订单 a,采购订单详情 b,材料 c, 供货商 d,员工 e where a.采购单编号 = b.采购单编号 and b.材料编号 = c.材料编号 and a.供应商编号= d.供应商编号 and a.员工编号=e.员工编号 )AA GROUP BY 采购单编号, 供应商编号, 供应商名, 员工编号, 员工名, 采购日期

select a.采购单编号, select * from fun3(c.材料名), a.供应商编号,d.供应商名,a.员工编号,e.员工名,a.采购日期 from 采购订单 a,采购订单详情 b,材料 c, 供货商 d,员工 e ----------------------------- LZ这種寫法就有問題的...

不是的,上面提到c.材料名 获得的不是一个值,是一个聚合值。 我这里实际的行显示的值是: 采购单编号  材料名1  材料名2  材料名3  材料名4  材料名5   供应商编号.....等等 我考虑的是采购单是给供应商的,所以一张采购单对应给一个供货商。但采购内容(这里为材料名)则可以在一张采购单中填最多5个,不够用"null"补。

采购单编号  材料名1  材料名2  材料名3  材料名4  材料名5   供应商编号.....等等 这个是传到界面层的datagrid时的显示效果,数据库中我只用了一个c.材料名 查询这5个值。于是就用出了想通过函数接收聚合值转到dataset的现象。

在线,期待中..........

dsfs期待终

mark

不知,帮顶

N久回来,方法是用表变量进行处理。

上一篇:怎样将字段数值每天自动减1呀? 0fredrickhu]
下一篇:vvvvvvvvvvvv北京知名企业招聘vvvvvvvvvvvvvvv 0分,无满意结帖,结帖人dutguoyi]

相关文章

相关评论