各位大哥大姐们好!我如何实现这样的查询?
比如我把数据分为三个组,分别为A,B,C 三个组,已知A组的数据编号为FBJ805C445900 到 FBJ805C445998  已知B组的数据编号为FBJ815C445900 到 FBJ815C445998  已知C组的数据编号为FBJ805C44501 到 FBJ805C44591 等等。其实后面的编号是没定的,但每组都有个开始和结束的编号,每组的开始和结束的编号也是没定的。上面只是举个例子。现在就是如何去查询已知一个编号去查是在那一个组的?就是说我现在有一个编号怎么样去查它是属于那一个组的?谢谢!

解决方案 »

  1.   

    樓主要這樣? create一個表就可以了吧
    create table t (c1 varchar(01),c2 varchar(20))
    insert into t
    select 'A','FBJ805C445900'
    union
    select 'A','FBJ805C445901'
    union
    select 'A','FBJ805C445902'
    .........
    union
    select 'A','FBJ805C445998'
    union
    select 'B','...'declare @input varchar(20)
    select t.c1 from t where c2=@input
      

  2.   

    它不会只有三个组,会有多个组,有时A组的开始为FBJ905C433900 和结束为 FBJ905C433998
    或为别的,这个并不重要,就算给个固定的也好,问题是如何去决定一个编号是那个组的?
      

  3.   

    樓主是不是要這樣的??
    Create Table TEST (数据编号 Varchar(20),分組  Char(1))
    Insert Into TEST(数据编号)
    Select 'FBJ805C445900'
    Union
    Select 'FBJ805C445901'
    Union
    Select 'FBJ805C445902'
    Union
    Select 'FBJ805C445998'
    Union
    Select 'FBJ815C445900'
    Union
    Select 'FBJ815C445998'
    GO
    Update TEST Set 分組=(Case When 数据编号 Between 'FBJ805C445900' And 'FBJ805C445998' Then 'A'
     When 数据编号 Between 'FBJ815C445900' And 'FBJ815C445998' Then 'B' End)
    Select * From TEST
    GO
    Drop Table TEST
    GO
    --Result
    /*
    数据编号 分組
    FBJ805C445900 A
    FBJ805C445901 A
    FBJ805C445902 A
    FBJ805C445998 A
    FBJ815C445900 B
    FBJ815C445998 B
    */
      

  4.   

    你不需要另外建表,我建表是摹擬你的數據建立一個測試環境來實現你要的效果啊。關鍵問題是這是不是你要的效果。你需要的只是中間那段update語句,根據實際需求,你還需適當改動。
      

  5.   

    我们是用扫描枪扫描数据的,比如这样一个序号 FNP205C427448 里,F是厂别一般是不变的,NP2是机种,有时变,05C是年月时间,后面的都是数字编号。一个组要生产多少货就根据序号的开始和结束来定的,是后面的数字来统计的。谢谢!
      

  6.   

    Create Table A(分組 Char(1),开始编号 Varchar(20),结束编号 Varchar(20))
    Insert A Select 'A', 'FBJ805C445900','FBJ805C445998'
    Union All Select 'B', 'FBJ815C445900','FBJ815C445998'
    Create Table B (数据编号 Varchar(20),分組  Char(1))
    GO
    Create Trigger Insert_B On B
    Instead Of Insert 
    As
    Insert B Select C.数据编号,A.分組 From A Inner Join Inserted C On C.数据编号 Between A.开始编号 And A.结束编号
    GO
    Insert Into B(数据编号)
    Select 'FBJ805C445900'
    Union
    Select 'FBJ805C445901'
    Union
    Select 'FBJ805C445902'
    Union
    Select 'FBJ805C445998'
    Union
    Select 'FBJ815C445900'
    Union
    Select 'FBJ815C445998'
    Select * From B
    GO
    Drop Table A,B
    GO
    --Result
    /*
    数据编号 分組
    FBJ805C445900 A
    FBJ805C445901 A
    FBJ805C445902 A
    FBJ805C445998 A
    FBJ815C445900 B
    FBJ815C445998 B
    */
      

  7.   

    看你的需求應該是需要一個觸發器。運行
    Create Trigger Insert_B On B
    Instead Of Insert 
    As
    Insert B Select C.数据编号,A.分組 From A Inner Join Inserted C On C.数据编号 Between A.开始编号 And A.结束编号
    GO這段代碼建立觸發器後,以後你只輸入“数据编号”,就能自動將“分組”插入到表中。將表名A、B改為你實際的表名。A為你的有开始编号、结束编号的表。B為你要插入數據的表。
      

  8.   

    select 组别 from 组别表 where  开始序号<='输入序号' and 结束序号>='输入序号'
      

  9.   

    select 组别 from 组别表 where  开始序号<='输入序号' and 结束序号>='输入序号'
    up!
      

  10.   

    select 组别 from 组别表 where  开始序号<='输入序号' and 结束序号>='输入序号'这种只适合数字的序号才有用的吧,有字符的没用的吧?
      

  11.   

    paoluo(一天到晚游泳的鱼)  你的那些当然好啦。可是好深奥哦,我是只菜鸟哦!如果字符也可以比較,那用select 组别 from 组别表 where  开始序号<='输入序号' and 结束序号>='输入序号' 这样或许或可以吧。我是用VB 写的程序。我试试!谢谢大家啦!