重复2列值时获取单行

时间:2013-02-22 07:39:34

标签: sql sql-server-2008

提前致谢。

我的客户收到了这个特定商品的信息,该商品的ID根据他们的要求而定。在这个特定的请求项目上,ID的定义如下。

  1. 条形码# - 机器生成
  2. 可见# - 手动序列号
  3. 在项目本身上,条形码的实际值不会显示,而是应该是等效的可见项。

            Example
            -------
    
    ||||||||| <Barcode # - C007587>
     C000001  <Visible # - C000001>
    

    该项目的制造商虽然生成并打印条形码#和Visible#on,但数字会重复。它们为我的客户提供最终的Excel工作表,并且必须将excel数据导入到DB中。但检查后我们发现数据有重复的ID。

    DB Schema with row sample
    
    SRNO    BarcodeID    VisibleID
    ----    ---------    ---------
    1       C007587      C000001
    2       C000001      C011704
    

    操作员使用条形码扫描仪大部分时间扫描物品上的ID,但有时他们也会手动键入值。

    SQL Query I am using is as follows
    ----------------------------------
    
    select * from <table> where barcodeid='C000001' or VisibleID='C000001'
    

    当执行上面的SQL代码时,我们得到2行,原因很明显,我只需要获得1行。 (只要在任一列中没有重复值,我们就会获得单行结果,这对我们有效。)

    注意:如果操作员键入或扫描ID代码NOR,我将无法区分我能够修改我们收到的excel文件。

    因此请求有关如何解决此问题并获得实际结果的任何建议。

1 个答案:

答案 0 :(得分:0)

如果没有说明输入的来源(条形码/手动输入),则无法检测到这一点。

另外:条形码下方的数字通常是条形码编号本身,这也是条形码规范(afaik)的一部分。

但是,这并不总是可行的。我的客户使用人类可读的ID以及RFID标签。 RFID-ID是36位十六进制数字代码,不适合人类输入。在两者之间消除差异的解决方案是密钥的长度(以及输入源)。人类可读的ID总是4位数。

所以我可以提供3种解决方案:

  1. 查询数据库时考虑输入源。
  2. 在条形码下方打印条形码#
  3. 更改任一代码的代码长度。