Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中将序列号#从初始项目列表表添加到计数项目表w/out Serial#_Sql_Sql Server_Sql Server 2012 Express - Fatal编程技术网

在SQL中将序列号#从初始项目列表表添加到计数项目表w/out Serial#

在SQL中将序列号#从初始项目列表表添加到计数项目表w/out Serial#,sql,sql-server,sql-server-2012-express,Sql,Sql Server,Sql Server 2012 Express,我正在做一个小的库存项目,我有两个表,我想以一种特定的方式合并 这是我的两张桌子: 表1(初始项目清单): 表2(计数产品): 以下是我正在使用的代码: SELECT DISTINCT * FROM (SELECT * FROM (SELECT ScannedItems.CountTagId, ScannedItems.ItemNumber, ScannedItems.barcode FROM ScannedItems U

我正在做一个小的库存项目,我有两个表,我想以一种特定的方式合并

这是我的两张桌子:

表1(初始项目清单):

表2(计数产品):

以下是我正在使用的代码:

SELECT DISTINCT * 
FROM (SELECT * 
      FROM 
        (SELECT ScannedItems.CountTagId, ScannedItems.ItemNumber, ScannedItems.barcode
         FROM ScannedItems 

         UNION ALL 

         SELECT CountId, ItemNumber, SerialNumber 
         FROM FrozenData
        ) Tbls
      GROUP BY ItemNumber, CountTagId, Barcode
      HAVING COUNT(*)<2
     ) Diff
以下是我希望它输出的内容(不包括串行#30,因为它没有被计算在内):


我知道我忘了什么。非常感谢您提供的任何帮助或指向某个可以提供帮助的地方的链接。

执行Unino All操作就是将表堆叠在彼此的顶部,这就是为什么要获得额外的行。其次,既然扫描和ProductNo是一样的,你怎么知道30的SN是没有扫描的

但你可以这样做:

Select t1.scan#, t1.ItemNumber, t2.Barcode#, t1.Serial#
from table1 t1
join table2 t2
on t1.scan# = t2.scan#
and t1.ItemNumber = t2.ItemNumber

如果要按序列号匹配行,则需要将其添加到:

select si.*, fi.barcode
from (select si.*,
             row_number() over (partition by scan, itemnumber order by serial) as seqnum
      from ScannedItems si
     ) si join
     (select fi.*,
             row_number() over (partition by scan, itemnumber order by barcode) as seqnum
      from FrozenItems fi
     ) fi
     on fi.scan = si.scan and
        fi.itemnumber = si.itemnumber and
        fi.seqnum = si.seqnum;

SQL表表示无序集。如果订单由第三列提供,这将对您有效。

您如何知道哪个条形码与哪个序列号匹配?您是否打算依赖列出的订单,并将第一行与第一行、第二行与第二行等匹配。?
   Scan#      ItemNUmber   Serial#
----------- ----------- ---------------
  374         123458      10
  374         123458      11
  374         123458      30
  374         123458      926373700243
  374         123458      926373700267

 Scan#      ProductNo     Barcode#       SN#
----------- ----------- --------------- -----
  374         123458      926373700243    10
  374         123458      926373700267    11
Select t1.scan#, t1.ItemNumber, t2.Barcode#, t1.Serial#
from table1 t1
join table2 t2
on t1.scan# = t2.scan#
and t1.ItemNumber = t2.ItemNumber
select si.*, fi.barcode
from (select si.*,
             row_number() over (partition by scan, itemnumber order by serial) as seqnum
      from ScannedItems si
     ) si join
     (select fi.*,
             row_number() over (partition by scan, itemnumber order by barcode) as seqnum
      from FrozenItems fi
     ) fi
     on fi.scan = si.scan and
        fi.itemnumber = si.itemnumber and
        fi.seqnum = si.seqnum;