行转列高手Come分数送上

longjie1122 2010-07-06 09:37:03
ID HeadID FNumber MakeNO FName FModel
43 20 2.1.1.1 20100500002 防水耐高温电缆 AFF46/260 8*1.5
44 21 2.1.1.1 20100500006 防水耐高温电缆 AFF46/260 8*1.5
45 22 2.1.1.1 20100500005 防水耐高温电缆 AFF46/260 8*1.5
46 23 2.2.2.07 20100600864 铜热电阻 Cu50WZC--020--50+150
47 23 2.2.2.07 20100600258 铜热电阻 Cu50WZC--020--50+150
48 23 2.2.2.07 20100600686 铜热电阻 Cu50WZC--020--50+150
49 23 2.2.2.07 20100600348 铜热电阻 Cu50WZC--020--50+150
51 23 2.2.2.08 20100600047 E型热电偶芯 L=150 φ27
52 23 2.2.2.08 20100600082 E型热电偶芯 L=150 φ27
53 23 2.2.2.08 20100600067 E型热电偶芯 L=150 φ27
54 23 2.2.2.07 20100600956 铜热电阻 Cu50WZC--020--50+150
79 23 2.2.2.07 20100600321 铜热电阻 Cu50WZC--020--50+150
80 23 2.2.2.07 20100600334 铜热电阻 Cu50WZC--020--50+150
81 23 2.2.2.07 20100600389 铜热电阻 Cu50WZC--020--50+150
82 23 2.2.2.07 20100600456 铜热电阻 Cu50WZC--020--50+150
83 23 2.2.2.08 20100600034 E型热电偶芯 L=150 φ27
84 23 2.2.2.08 20100600028 E型热电偶芯 L=150 φ27
85 23 2.2.2.08 20100600039 E型热电偶芯 L=150 φ27
86 23 2.2.2.07 20100600621 铜热电阻 Cu50WZC--020--50+150
87 23 2.2.2.07 20100600387 铜热电阻 Cu50WZC--020--50+150
88 23 2.2.2.08 20100600031 E型热电偶芯 L=150 φ27
89 23 2.2.2.08 20100600147 E型热电偶芯 L=150 φ27
90 23 2.2.2.08 20100600841 E型热电偶芯 L=150 φ27
91 23 2.2.2.07 20100600320 铜热电阻 Cu50WZC--020--50+150
92 23 2.2.2.08 20100600069 E型热电偶芯 L=150 φ27
93 23 2.2.2.08 20100600269 E型热电偶芯 L=150 φ27
94 23 2.2.2.08 20100600732 E型热电偶芯 L=150 φ27

那位高手给写个SQL 语句 将上面的数据根据 FModel分组 将它所对应的 makeNO显示出来并且要把makeNO截取显示
每一行都只能有10个数据 如果超过10个就跳到对应的下一行 我用的 SQL Server 2000的数据库
最后出来的结果是
规格型号 年份 月份 序号1 序号2 序号3 序号4 序号5 序号6 序号7 序号8 序号9 序号10
AFF46/260 8*1.5 2010 06 00002 00006 00005
Cu50WZC--020--50+150 2010 06 00864 00258 00686 00348 00956 00321 00334 00389 00456 00621
00387 00320
L=150 φ27 2010 06 00047 00082 00067 00034 00028 00039 00031 00147 00841 00069
00269 00732

请各位高手指教 (⊙o⊙)
...全文
458 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
longjie1122 2010-07-06
  • 打赏
  • 举报
回复

longjie1122 2010-07-06
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 nightmaple 的回复:]
引用 14 楼 xys_777 的回复:
你们图片都不显示

我看到的只有13楼的图片没显示~
[/Quote]
我直接复制的 什么也没少啊 我这只有 8楼没显示。。。
nightmaple 2010-07-06
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xys_777 的回复:]
你们图片都不显示
[/Quote]

我看到的只有13楼的图片没显示~
nightmaple 2010-07-06
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 longjie1122 的回复:]
为什么 我加上来
CASE WHEN rn / 10 = 0 THEN LEFT(MakeNO, 4) ELSE '' END AS Years,
CASE WHEN rn / 10 = 0 THEN SUBSTRING(MakeNO, 5, 2) ELSE '' END AS Months,
这两句代码后说 a.makeNO 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含……
[/Quote]

看7楼的,你应该是少了
group by a.FModel,LEFT(MakeNO,4),SUBSTRING(MakeNO,5,2),a.rn/10
longjie1122 2010-07-06
  • 打赏
  • 举报
回复
为什么 我加上来
CASE WHEN rn / 10 = 0 THEN LEFT(MakeNO, 4) ELSE '' END AS Years,
CASE WHEN rn / 10 = 0 THEN SUBSTRING(MakeNO, 5, 2) ELSE '' END AS Months,
这两句代码后说 a.makeNO 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含早Group by子句中
longjie1122 2010-07-06
  • 打赏
  • 举报
回复
啊 我这怎么显示啊 。。。。。
永生天地 2010-07-06
  • 打赏
  • 举报
回复
你们图片都不显示
longjie1122 2010-07-06
  • 打赏
  • 举报
回复

这是按照你们给的代码处的结果


这是我加来 where条件后的结果
nightmaple 2010-07-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 longjie1122 的回复:]
难道是数据库的关系 我用的是sql 2000? 出来的数据 不对称啊 能查出结果来但是 出来的数据太乱乱
[/Quote]

这个跟数据库版本没关系~~~
永生天地 2010-07-06
  • 打赏
  • 举报
回复
也不是太乱

永生天地 2010-07-06
  • 打赏
  • 举报
回复
用文本显示是会乱的

用网格显示吧
longjie1122 2010-07-06
  • 打赏
  • 举报
回复
难道是数据库的关系 我用的是sql 2000? 出来的数据 不对称啊 能查出结果来但是 出来的数据太乱乱
nightmaple 2010-07-06
  • 打赏
  • 举报
回复
再来张图,7楼的结果
nightmaple 2010-07-06
  • 打赏
  • 举报
回复
少了年和月?

select case when rn/10=0 then FModel else '' end FModel,
case when rn/10=0 then LEFT(MakeNO,4) else '' end as Years,
case when rn/10=0 then SUBSTRING(MakeNO,5,2) else '' end as Months,
right(max(case when rn%10=0 then MakeNO else '' end),5) as MakeNO01,
right(max(case when rn%10=1 then MakeNO else '' end),5) as MakeNO02,
right(max(case when rn%10=2 then MakeNO else '' end),5) as MakeNO03,
right(max(case when rn%10=3 then MakeNO else '' end),5) as MakeNO04,
right(max(case when rn%10=4 then MakeNO else '' end),5) as MakeNO05,
right(max(case when rn%10=5 then MakeNO else '' end),5) as MakeNO06,
right(max(case when rn%10=6 then MakeNO else '' end),5) as MakeNO07,
right(max(case when rn%10=7 then MakeNO else '' end),5) as MakeNO08,
right(max(case when rn%10=8 then MakeNO else '' end),5) as MakeNO09,
right(max(case when rn%10=9 then MakeNO else '' end),5) as MakeNO10
from(
select MakeNO,FModel,
rn=(select count(1) from tb where FModel=t.FModel and MakeNO<t.MakeNO)
from tb t) a
group by a.FModel,LEFT(MakeNO,4),SUBSTRING(MakeNO,5,2),a.rn/10
order by a.FModel,a.rn/10

---------------------------------------------------------------------------------
FModel Years Months MakeNO01 MakeNO02 MakeNO03 MakeNO04 MakeNO05 MakeNO06 MakeNO07 MakeNO08 MakeNO09 MakeNO10
AFF46/260 8*1.5 2010 05 00100 00101 00102 00103 00104 00105 00106 00107 00108 00109
00110 00111 00112
Cu50WZC--020--50+150 2010 06 00001 00002 00003 00004 00005 00006 00007 00008 00009 00010
00011 00012 00013 00014 00015 00016
L=150 φ27 2010 06 00050 00051 00052
tashiwoweiyi 2010-07-06
  • 打赏
  • 举报
回复
nightmaple 2010-07-06
  • 打赏
  • 举报
回复
来张图看看
永生天地 2010-07-06
  • 打赏
  • 举报
回复
具体问题再哪?
nightmaple 2010-07-06
  • 打赏
  • 举报
回复
这个是xys_777的结果,我觉得没什么不对啊~~~是哪不对啦?
select case when rn/10=0 then FModel else '' end FModel,
right(max(case when rn%10=0 then MakeNO else '' end),5) as MakeNO01,
right(max(case when rn%10=1 then MakeNO else '' end),5) as MakeNO02,
right(max(case when rn%10=2 then MakeNO else '' end),5) as MakeNO03,
right(max(case when rn%10=3 then MakeNO else '' end),5) as MakeNO04,
right(max(case when rn%10=4 then MakeNO else '' end),5) as MakeNO05,
right(max(case when rn%10=5 then MakeNO else '' end),5) as MakeNO06,
right(max(case when rn%10=6 then MakeNO else '' end),5) as MakeNO07,
right(max(case when rn%10=7 then MakeNO else '' end),5) as MakeNO08,
right(max(case when rn%10=8 then MakeNO else '' end),5) as MakeNO09,
right(max(case when rn%10=9 then MakeNO else '' end),5) as MakeNO10
from(
select MakeNO,FModel,
rn=(select count(1) from tb where FModel=t.FModel and MakeNO<t.MakeNO)
from tb t) a
group by a.FModel,a.rn/10
order by a.FModel,a.rn/10

/*
FModel MakeNO01MakeNO02MakeNO03MakeNO04MakeNO05MakeNO06MakeNO07MakeNO08MakeNO09MakeNO10
AFF46/260 8*1.5 00100 00101 00102 00103 00104 00105 00106 00107 00108 00109
00110 00111 00112
Cu50WZC--020--50+150 00001 00002 00003 00004 00005 00006 00007 00008 00009 00010
00011 00012 00013 00014 00015 00016
L=150 φ27 00050 00051 00052
*/
longjie1122 2010-07-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 nightmaple 的回复:]
我记得我看过这个帖,应该是解决了的~~~
[/Quote]

恩啊 昨天发过 不过结果和我要的还是不太对称。。。。。
nightmaple 2010-07-06
  • 打赏
  • 举报
回复
我记得我看过这个帖,应该是解决了的~~~

22,209

社区成员

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

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