单号         合同号   工厂号      面料123  合计
0725-531 307021 TB22116-82 绿色 4
0725-532 307021 TB22116-82 土黄 5
0725-533 307021 TB22111-89 兰色 10
0725-534 307021 TB22111-89 黑色 9
0725-535 307021 TB2207-97 米色 6
0725-536 307021 TB2207-97 兰色 6
0725-537 307021 TB2202-97 米色 90
0725-538 307021 TB2202-97 绿色 30
0725-539 307021 TB2202-97 黑色 180
0725-540 307021 TB2258-81 土黄 240
0725-541 307021 TB2258-81 桔色 180
0725-542 307021 TB2207-97 米色 240
0725-543 307021 TB2207-97 兰色 240
0725-544 307022 TB2258-81 绿色 60
0725-545 307022 TB2258-81 土黄 120
0725-546 307022 TB2258-81 桔色 120
0725-556 307005 TB2205-68 红色 60
0725-557 307005 TB2205-68 兰色 60
0725-558 307006 TB2258-81 桔色 60
0725-559 307006 TB2258-81 土黄 90
0725-560 307006 TB2258-81 黑色 120
0725-561 307007 TB22116-82 绿色 90
0725-562 307007 TB22116-82 土黄 90
0725-563 307007 TB22116-82 黑色 120
我想让:首先单号排序,当后面有工厂号和此单号的工厂号一样时,就把此行
拉到前面来,即
单号         合同号   工厂号      面料123  合计
0725-531 307021 TB22116-82 绿色 4
0725-532 307021 TB22116-82 土黄 5
0725-561 307007 TB22116-82 绿色 90
0725-562 307007 TB22116-82 土黄 90
0725-563 307007 TB22116-82 黑色 120
0725-533 307021 TB22111-89 兰色 10
0725-534 307021 TB22111-89 黑色 9
0725-535 307021 TB2207-97 米色 6
0725-536 307021 TB2207-97 兰色 6
0725-537 307021 TB2202-97 米色 90
0725-538 307021 TB2202-97 绿色 30
0725-539 307021 TB2202-97 黑色 180
0725-542 307021 TB2207-97 米色 240
0725-543 307021 TB2207-97 兰色 240
0725-540 307021 TB2258-81 土黄 240
0725-541 307021 TB2258-81 桔色 180
0725-544 307022 TB2258-81 绿色 60
0725-545 307022 TB2258-81 土黄 120
0725-546 307022 TB2258-81 桔色 120
0725-558 307006 TB2258-81 桔色 60
0725-559 307006 TB2258-81 土黄 90
0725-560 307006 TB2258-81 黑色 120
0725-556 307005 TB2205-68 红色 60
0725-557 307005 TB2205-68 兰色 60不知道此时的ORDER BY 怎么写啊,或者有什么其它的办法吗

解决方案 »

  1.   


    order by 工厂号,单号
      

  2.   

    select * from tb order by 工厂号,单号
      

  3.   

    不知道ORDER BY
    WHEN CASE 好象不行
    怎么弄游标,先按单号排序,判断如果后面有这个型体拉到前面来
      

  4.   

    group by 工厂号  
    order by 单号 
      

  5.   

    不知道ORDER BY
    WHEN CASE 好象不行
    怎么弄游标,先按单号排序,判断如果后面有这个工厂号拉到前面来
      

  6.   

    select * from tb order by 工厂号 desc,单号
      

  7.   

    如果要指定工厂号的顺序,那么楼主还需要自己去建一个表或临时表,来把工厂号的顺序指定下。
    ;with cte as
    (
        select 'A1' as 工厂号,1 as orderflag union all 
        select 'A2',2
    )select a.*
    from tb a join cte b on a.工厂号 = b.工厂号
    order by b.orderflag,a.单号
      

  8.   


    先按单号排序,判断如果后面有这个工厂号拉到前面来
    理想的是这样的:(按单号分组,其中组里面第一个单号,按顺序排列)
    group by 工厂号   
    order by 单号 
    上面语句group by肯定会有错误还是不行啊
      

  9.   

    能不能帮我写到一个复合的Select 语句中
    我急着要写到VB里面的,谢谢大虾
      

  10.   

    可以按需插入临时表,临时表增加一个自动ID,seqNo int IDENTITY (1, 1),最后按此SeqNo排序就好了。
      

  11.   

    我在,相当于在SQL 环境里面,即VBA操作
    大哥大姐们,帮帮我哇,SQL 初学者啊
    我急用,帮我写全点啊,
    只要SQL server运行通过就行了哇
      

  12.   

    【首先单号排序,当后面有工厂号和此单号的工厂号一样时,就把此行
    拉到前面来】a记录后面有b、c记录的工厂号和a单号的工厂号一样
    也意味着
    b记录后面有a、c记录的工厂号和b单号的工厂号一样
    c记录后面有b、a记录的工厂号和c单号的工厂号一样
    那a、b、c都可以拉到前面了
      

  13.   

    ORDER BY
     when case可用
      

  14.   

    加一个分组连接
    --单号 合同号 工厂号 面料123 合计
    select a.* from tb a,(select 工厂号,min(单号) as 单号 from tb group by 工厂号) as b where a.工厂号=b.工厂号 order by b.单号,a.工厂号,a.单号