【问题标题】:Populating rows based on the value in that row根据该行中的值填充行
【发布时间】:2018-12-18 09:11:43
【问题描述】:

我需要为当前批次中的项目生成序列号。

我使用以下代码生成了序列号:

--insert into SerialMF  (
--  SerialNumber
--, SNStockLink
--, SNDateLMove
--, CurrentLoc
--, CurrentAccLink
--, iSNLotID
--, iSNMFPID
--, iSNMFPLineID
--, SerialMF_iBranchID
--)
select
    'StockOut'+cast(iStockID as varchar)+'_'+right(replicate('0',3)+cast(rank() over (partition by iStockID order by iStockID) as varchar),3)   SerialNumber
,   iStockID                        --  SNStockLink
,   getdate()                       --  SNDateLMove
,   1                               --  CurrentLoc
,   iWarehouseID                    --  CurrentAccLink
,   0                               --  iSNLotID
,   0                               --  iSNMFPID
,   0                               --  iSNMFPLineID
,   _etblInvJrBatchLines_iBranchID  --  SerialMF_iBranchID
,   fQtyOut
from
( 
  select * from _etblInvJrBatchLines
  where iInvJrBatchID = 1 and bIsSerialItem = 1
)b
left outer join
(
  select * from SerialMF
)s  on  b.iStockID  =   s.SNStockLink
where SNStockLink is null

从上面,它正确地生成了序列号,但是我意识到它没有生成序列号到该项目的实际数量。

我需要为该特定项目的每个数量生成序列号,但是每个数量的序列号需要不同。

数据库中当前返回的行数为 1865,但以下示例数据供您参考和帮助(100 行):

SerialNumber       iStockID  getdate()  (No column name)    iWarehouseID    (No column name)    (No column name)    (No column name)    _etblInvJrBatchLines_iBranchID  fQtyOut
StockOut63041_001   63041   18/12/2018  1   479 0   0   0   0   2
StockOut63042_001   63042   18/12/2018  1   479 0   0   0   0   1
StockOut63043_001   63043   18/12/2018  1   479 0   0   0   0   1
StockOut63044_001   63044   18/12/2018  1   479 0   0   0   0   2
StockOut63045_001   63045   18/12/2018  1   479 0   0   0   0   2
StockOut63046_001   63046   18/12/2018  1   479 0   0   0   0   1
StockOut63047_001   63047   18/12/2018  1   479 0   0   0   0   1
StockOut63048_001   63048   18/12/2018  1   479 0   0   0   0   1
StockOut63049_001   63049   18/12/2018  1   479 0   0   0   0   1
StockOut63050_001   63050   18/12/2018  1   479 0   0   0   0   3
StockOut63051_001   63051   18/12/2018  1   479 0   0   0   0   1
StockOut63052_001   63052   18/12/2018  1   479 0   0   0   0   6
StockOut63053_001   63053   18/12/2018  1   479 0   0   0   0   1
StockOut63054_001   63054   18/12/2018  1   479 0   0   0   0   3
StockOut63055_001   63055   18/12/2018  1   479 0   0   0   0   1
StockOut63056_001   63056   18/12/2018  1   479 0   0   0   0   9
StockOut63057_001   63057   18/12/2018  1   479 0   0   0   0   4
StockOut63058_001   63058   18/12/2018  1   479 0   0   0   0   2
StockOut63059_001   63059   18/12/2018  1   479 0   0   0   0   1
StockOut63060_001   63060   18/12/2018  1   479 0   0   0   0   3
StockOut63061_001   63061   18/12/2018  1   479 0   0   0   0   1
StockOut63062_001   63062   18/12/2018  1   479 0   0   0   0   2
StockOut63063_001   63063   18/12/2018  1   479 0   0   0   0   1
StockOut63064_001   63064   18/12/2018  1   479 0   0   0   0   2
StockOut63065_001   63065   18/12/2018  1   479 0   0   0   0   1
StockOut63066_001   63066   18/12/2018  1   479 0   0   0   0   1
StockOut63067_001   63067   18/12/2018  1   479 0   0   0   0   6
StockOut63068_001   63068   18/12/2018  1   479 0   0   0   0   2
StockOut63069_001   63069   18/12/2018  1   479 0   0   0   0   3
StockOut63070_001   63070   18/12/2018  1   479 0   0   0   0   1
StockOut63071_001   63071   18/12/2018  1   479 0   0   0   0   2
StockOut63072_001   63072   18/12/2018  1   479 0   0   0   0   1
StockOut63073_001   63073   18/12/2018  1   479 0   0   0   0   2
StockOut63074_001   63074   18/12/2018  1   479 0   0   0   0   3
StockOut63075_001   63075   18/12/2018  1   479 0   0   0   0   5
StockOut63076_001   63076   18/12/2018  1   479 0   0   0   0   2
StockOut63077_001   63077   18/12/2018  1   479 0   0   0   0   5
StockOut63078_001   63078   18/12/2018  1   479 0   0   0   0   4
StockOut63079_001   63079   18/12/2018  1   479 0   0   0   0   1
StockOut63080_001   63080   18/12/2018  1   479 0   0   0   0   1
StockOut63081_001   63081   18/12/2018  1   479 0   0   0   0   1
StockOut63082_001   63082   18/12/2018  1   479 0   0   0   0   1
StockOut63083_001   63083   18/12/2018  1   479 0   0   0   0   3
StockOut63084_001   63084   18/12/2018  1   479 0   0   0   0   4
StockOut63085_001   63085   18/12/2018  1   479 0   0   0   0   1
StockOut63089_001   63089   18/12/2018  1   479 0   0   0   0   2
StockOut63090_001   63090   18/12/2018  1   479 0   0   0   0   3
StockOut63091_001   63091   18/12/2018  1   479 0   0   0   0   1
StockOut63092_001   63092   18/12/2018  1   479 0   0   0   0   1
StockOut63093_001   63093   18/12/2018  1   479 0   0   0   0   1
StockOut63094_001   63094   18/12/2018  1   479 0   0   0   0   1
StockOut63095_001   63095   18/12/2018  1   479 0   0   0   0   1
StockOut63096_001   63096   18/12/2018  1   479 0   0   0   0   1
StockOut63097_001   63097   18/12/2018  1   479 0   0   0   0   1
StockOut63098_001   63098   18/12/2018  1   479 0   0   0   0   3
StockOut63099_001   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63100_001   63100   18/12/2018  1   479 0   0   0   0   1
StockOut63101_001   63101   18/12/2018  1   479 0   0   0   0   4
StockOut63102_001   63102   18/12/2018  1   479 0   0   0   0   1
StockOut63104_001   63104   18/12/2018  1   479 0   0   0   0   2
StockOut63105_001   63105   18/12/2018  1   479 0   0   0   0   1
StockOut63106_001   63106   18/12/2018  1   479 0   0   0   0   1
StockOut63107_001   63107   18/12/2018  1   479 0   0   0   0   3
StockOut63108_001   63108   18/12/2018  1   479 0   0   0   0   7
StockOut63109_001   63109   18/12/2018  1   479 0   0   0   0   1
StockOut63110_001   63110   18/12/2018  1   479 0   0   0   0   1
StockOut63111_001   63111   18/12/2018  1   479 0   0   0   0   5
StockOut63112_001   63112   18/12/2018  1   479 0   0   0   0   1
StockOut63113_001   63113   18/12/2018  1   479 0   0   0   0   1
StockOut63114_001   63114   18/12/2018  1   479 0   0   0   0   1
StockOut63115_001   63115   18/12/2018  1   479 0   0   0   0   3
StockOut63116_001   63116   18/12/2018  1   479 0   0   0   0   1
StockOut63117_001   63117   18/12/2018  1   479 0   0   0   0   1
StockOut63118_001   63118   18/12/2018  1   479 0   0   0   0   1
StockOut63119_001   63119   18/12/2018  1   479 0   0   0   0   2
StockOut63120_001   63120   18/12/2018  1   479 0   0   0   0   1
StockOut63121_001   63121   18/12/2018  1   479 0   0   0   0   1
StockOut63122_001   63122   18/12/2018  1   479 0   0   0   0   1
StockOut63123_001   63123   18/12/2018  1   479 0   0   0   0   1
StockOut63124_001   63124   18/12/2018  1   479 0   0   0   0   1
StockOut63125_001   63125   18/12/2018  1   479 0   0   0   0   1
StockOut63126_001   63126   18/12/2018  1   479 0   0   0   0   1
StockOut63127_001   63127   18/12/2018  1   479 0   0   0   0   2
StockOut63128_001   63128   18/12/2018  1   479 0   0   0   0   2
StockOut63129_001   63129   18/12/2018  1   479 0   0   0   0   2
StockOut63130_001   63130   18/12/2018  1   479 0   0   0   0   1
StockOut63131_001   63131   18/12/2018  1   479 0   0   0   0   1
StockOut63132_001   63132   18/12/2018  1   479 0   0   0   0   3
StockOut63133_001   63133   18/12/2018  1   479 0   0   0   0   2
StockOut63134_001   63134   18/12/2018  1   479 0   0   0   0   1
StockOut63135_001   63135   18/12/2018  1   479 0   0   0   0   1
StockOut63136_001   63136   18/12/2018  1   479 0   0   0   0   1
StockOut63137_001   63137   18/12/2018  1   479 0   0   0   0   1
StockOut63138_001   63138   18/12/2018  1   479 0   0   0   0   1
StockOut63140_001   63140   18/12/2018  1   479 0   0   0   0   1
StockOut63141_001   63141   18/12/2018  1   479 0   0   0   0   1
StockOut63142_001   63142   18/12/2018  1   479 0   0   0   0   8
StockOut63143_001   63143   18/12/2018  1   479 0   0   0   0   1
StockOut63144_001   63144   18/12/2018  1   479 0   0   0   0   1
StockOut63145_001   63145   18/12/2018  1   479 0   0   0   0   5

如何为每个数量生成行,每个数量使用不同的序列号指定?

我的预期结果如下所示:

SerialNumber    iStockID    getdate()   (No column name)    iWarehouseID    (No column name)    (No column name)    (No column name)    _etblInvJrBatchLines_iBranchID  fQtyOut
StockOut63041_001   63041   18/12/2018  1   479 0   0   0   0   2
StockOut63041_002   63041   18/12/2018  1   479 0   0   0   0   2
StockOut63042_001   63042   19/12/2018  1   479 0   0   0   0   2
StockOut63042_002   63042   19/12/2018  1   479 0   0   0   0   2
StockOut63043_001   63043   18/12/2018  1   479 0   0   0   0   1
StockOut63044_001   63044   18/12/2018  1   479 0   0   0   0   2
StockOut63044_002   63044   18/12/2018  1   479 0   0   0   0   2
StockOut63045_001   63045   18/12/2018  1   479 0   0   0   0   2
StockOut63045_002   63045   18/12/2018  1   479 0   0   0   0   2
StockOut63046_001   63046   18/12/2018  1   479 0   0   0   0   1
StockOut63047_001   63047   18/12/2018  1   479 0   0   0   0   1
StockOut63048_001   63048   18/12/2018  1   479 0   0   0   0   1
StockOut63049_001   63049   18/12/2018  1   479 0   0   0   0   1
StockOut63050_001   63050   18/12/2018  1   479 0   0   0   0   3
StockOut63050_002   63050   18/12/2018  1   479 0   0   0   0   3
StockOut63050_003   63050   18/12/2018  1   479 0   0   0   0   3
StockOut63051_001   63051   18/12/2018  1   479 0   0   0   0   1
StockOut63052_001   63052   18/12/2018  1   479 0   0   0   0   6
StockOut63052_002   63052   18/12/2018  1   479 0   0   0   0   6
StockOut63052_003   63052   18/12/2018  1   479 0   0   0   0   6
StockOut63052_004   63052   18/12/2018  1   479 0   0   0   0   6
StockOut63052_005   63052   18/12/2018  1   479 0   0   0   0   6
StockOut63052_006   63052   18/12/2018  1   479 0   0   0   0   6
StockOut63053_001   63053   18/12/2018  1   479 0   0   0   0   1
StockOut63054_001   63054   18/12/2018  1   479 0   0   0   0   3
StockOut63054_002   63054   18/12/2018  1   479 0   0   0   0   3
StockOut63054_003   63054   18/12/2018  1   479 0   0   0   0   3
StockOut63055_001   63055   18/12/2018  1   479 0   0   0   0   1
StockOut63056_001   63056   18/12/2018  1   479 0   0   0   0   9
StockOut63056_002   63056   18/12/2018  1   479 0   0   0   0   9
StockOut63056_003   63056   18/12/2018  1   479 0   0   0   0   9
StockOut63056_004   63056   18/12/2018  1   479 0   0   0   0   9
StockOut63056_005   63056   18/12/2018  1   479 0   0   0   0   9
StockOut63056_006   63056   18/12/2018  1   479 0   0   0   0   9
StockOut63056_007   63056   18/12/2018  1   479 0   0   0   0   9
StockOut63056_008   63056   18/12/2018  1   479 0   0   0   0   9
StockOut63056_009   63056   18/12/2018  1   479 0   0   0   0   9
StockOut63057_001   63057   18/12/2018  1   479 0   0   0   0   4
StockOut63057_002   63057   18/12/2018  1   479 0   0   0   0   4
StockOut63057_003   63057   18/12/2018  1   479 0   0   0   0   4
StockOut63057_004   63057   18/12/2018  1   479 0   0   0   0   4
StockOut63058_001   63058   18/12/2018  1   479 0   0   0   0   2
StockOut63058_002   63058   18/12/2018  1   479 0   0   0   0   2
StockOut63059_001   63059   18/12/2018  1   479 0   0   0   0   1
StockOut63060_001   63060   18/12/2018  1   479 0   0   0   0   3
StockOut63060_002   63060   18/12/2018  1   479 0   0   0   0   3
StockOut63060_003   63060   18/12/2018  1   479 0   0   0   0   3
StockOut63061_001   63061   18/12/2018  1   479 0   0   0   0   1
StockOut63062_001   63062   18/12/2018  1   479 0   0   0   0   2
StockOut63062_002   63062   18/12/2018  1   479 0   0   0   0   2
StockOut63063_001   63063   18/12/2018  1   479 0   0   0   0   1
StockOut63064_001   63064   18/12/2018  1   479 0   0   0   0   2
StockOut63064_002   63064   18/12/2018  1   479 0   0   0   0   2
StockOut63065_001   63065   18/12/2018  1   479 0   0   0   0   1
StockOut63066_001   63066   18/12/2018  1   479 0   0   0   0   1
StockOut63067_001   63067   18/12/2018  1   479 0   0   0   0   6
StockOut63067_002   63067   18/12/2018  1   479 0   0   0   0   6
StockOut63067_003   63067   18/12/2018  1   479 0   0   0   0   6
StockOut63067_004   63067   18/12/2018  1   479 0   0   0   0   6
StockOut63067_005   63067   18/12/2018  1   479 0   0   0   0   6
StockOut63067_006   63067   18/12/2018  1   479 0   0   0   0   6
StockOut63068_001   63068   18/12/2018  1   479 0   0   0   0   2
StockOut63068_002   63068   18/12/2018  1   479 0   0   0   0   2
StockOut63069_001   63069   18/12/2018  1   479 0   0   0   0   3
StockOut63069_002   63069   18/12/2018  1   479 0   0   0   0   3
StockOut63069_003   63069   18/12/2018  1   479 0   0   0   0   3
StockOut63070_001   63070   18/12/2018  1   479 0   0   0   0   1
StockOut63071_001   63071   18/12/2018  1   479 0   0   0   0   2
StockOut63071_002   63071   18/12/2018  1   479 0   0   0   0   2
StockOut63072_001   63072   18/12/2018  1   479 0   0   0   0   1
StockOut63073_001   63073   18/12/2018  1   479 0   0   0   0   2
StockOut63073_002   63073   18/12/2018  1   479 0   0   0   0   2
StockOut63074_001   63074   18/12/2018  1   479 0   0   0   0   3
StockOut63074_002   63074   18/12/2018  1   479 0   0   0   0   3
StockOut63074_003   63074   18/12/2018  1   479 0   0   0   0   3
StockOut63075_001   63075   18/12/2018  1   479 0   0   0   0   5
StockOut63075_002   63075   18/12/2018  1   479 0   0   0   0   5
StockOut63075_003   63075   18/12/2018  1   479 0   0   0   0   5
StockOut63075_004   63075   18/12/2018  1   479 0   0   0   0   5
StockOut63075_005   63075   18/12/2018  1   479 0   0   0   0   5
StockOut63076_001   63076   18/12/2018  1   479 0   0   0   0   2
StockOut63076_002   63076   18/12/2018  1   479 0   0   0   0   2
StockOut63077_001   63077   18/12/2018  1   479 0   0   0   0   5
StockOut63077_002   63077   18/12/2018  1   479 0   0   0   0   5
StockOut63077_003   63077   18/12/2018  1   479 0   0   0   0   5
StockOut63077_004   63077   18/12/2018  1   479 0   0   0   0   5
StockOut63077_005   63077   18/12/2018  1   479 0   0   0   0   5
StockOut63078_001   63078   18/12/2018  1   479 0   0   0   0   4
StockOut63078_002   63078   18/12/2018  1   479 0   0   0   0   4
StockOut63078_003   63078   18/12/2018  1   479 0   0   0   0   4
StockOut63078_004   63078   18/12/2018  1   479 0   0   0   0   4
StockOut63079_001   63079   18/12/2018  1   479 0   0   0   0   1
StockOut63080_001   63080   18/12/2018  1   479 0   0   0   0   1
StockOut63081_001   63081   18/12/2018  1   479 0   0   0   0   1
StockOut63082_001   63082   18/12/2018  1   479 0   0   0   0   1
StockOut63083_001   63083   18/12/2018  1   479 0   0   0   0   3
StockOut63083_002   63083   18/12/2018  1   479 0   0   0   0   3
StockOut63083_003   63083   18/12/2018  1   479 0   0   0   0   3
StockOut63084_001   63084   18/12/2018  1   479 0   0   0   0   4
StockOut63084_002   63084   18/12/2018  1   479 0   0   0   0   4
StockOut63084_003   63084   18/12/2018  1   479 0   0   0   0   4
StockOut63084_004   63084   18/12/2018  1   479 0   0   0   0   4
StockOut63085_001   63085   18/12/2018  1   479 0   0   0   0   1
StockOut63089_001   63089   18/12/2018  1   479 0   0   0   0   2
StockOut63089_002   63089   18/12/2018  1   479 0   0   0   0   2
StockOut63090_001   63090   18/12/2018  1   479 0   0   0   0   3
StockOut63090_002   63090   18/12/2018  1   479 0   0   0   0   3
StockOut63090_003   63090   18/12/2018  1   479 0   0   0   0   3
StockOut63091_001   63091   18/12/2018  1   479 0   0   0   0   1
StockOut63092_001   63092   18/12/2018  1   479 0   0   0   0   1
StockOut63093_001   63093   18/12/2018  1   479 0   0   0   0   1
StockOut63094_001   63094   18/12/2018  1   479 0   0   0   0   1
StockOut63095_001   63095   18/12/2018  1   479 0   0   0   0   1
StockOut63096_001   63096   18/12/2018  1   479 0   0   0   0   1
StockOut63097_001   63097   18/12/2018  1   479 0   0   0   0   1
StockOut63098_001   63098   18/12/2018  1   479 0   0   0   0   3
StockOut63098_002   63098   18/12/2018  1   479 0   0   0   0   3
StockOut63098_003   63098   18/12/2018  1   479 0   0   0   0   3
StockOut63099_001   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63099_002   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63099_003   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63099_004   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63099_005   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63099_006   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63099_007   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63099_008   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63099_009   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63099_010   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63099_011   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63099_012   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63099_013   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63099_014   63099   18/12/2018  1   479 0   0   0   0   14
StockOut63100_001   63100   18/12/2018  1   479 0   0   0   0   1
StockOut63101_001   63101   18/12/2018  1   479 0   0   0   0   4
StockOut63101_002   63101   18/12/2018  1   479 0   0   0   0   4
StockOut63101_003   63101   18/12/2018  1   479 0   0   0   0   4
StockOut63101_004   63101   18/12/2018  1   479 0   0   0   0   4
StockOut63102_001   63102   18/12/2018  1   479 0   0   0   0   1
StockOut63104_001   63104   18/12/2018  1   479 0   0   0   0   2
StockOut63104_002   63104   18/12/2018  1   479 0   0   0   0   2
StockOut63105_001   63105   18/12/2018  1   479 0   0   0   0   1
StockOut63106_001   63106   18/12/2018  1   479 0   0   0   0   1
StockOut63107_001   63107   18/12/2018  1   479 0   0   0   0   3
StockOut63107_002   63107   18/12/2018  1   479 0   0   0   0   3
StockOut63107_003   63107   18/12/2018  1   479 0   0   0   0   3
StockOut63108_001   63108   18/12/2018  1   479 0   0   0   0   7
StockOut63108_002   63108   18/12/2018  1   479 0   0   0   0   7
StockOut63108_003   63108   18/12/2018  1   479 0   0   0   0   7
StockOut63108_004   63108   18/12/2018  1   479 0   0   0   0   7
StockOut63108_005   63108   18/12/2018  1   479 0   0   0   0   7
StockOut63108_006   63108   18/12/2018  1   479 0   0   0   0   7
StockOut63108_007   63108   18/12/2018  1   479 0   0   0   0   7
StockOut63109_001   63109   18/12/2018  1   479 0   0   0   0   1
StockOut63110_001   63110   18/12/2018  1   479 0   0   0   0   1
StockOut63111_001   63111   18/12/2018  1   479 0   0   0   0   5
StockOut63111_002   63111   18/12/2018  1   479 0   0   0   0   5
StockOut63111_003   63111   18/12/2018  1   479 0   0   0   0   5
StockOut63111_004   63111   18/12/2018  1   479 0   0   0   0   5
StockOut63111_005   63111   18/12/2018  1   479 0   0   0   0   5
StockOut63112_001   63112   18/12/2018  1   479 0   0   0   0   1
StockOut63113_001   63113   18/12/2018  1   479 0   0   0   0   1
StockOut63114_001   63114   18/12/2018  1   479 0   0   0   0   1
StockOut63115_001   63115   18/12/2018  1   479 0   0   0   0   3
StockOut63115_002   63115   18/12/2018  1   479 0   0   0   0   3
StockOut63115_003   63115   18/12/2018  1   479 0   0   0   0   3
StockOut63116_001   63116   18/12/2018  1   479 0   0   0   0   1
StockOut63117_001   63117   18/12/2018  1   479 0   0   0   0   1
StockOut63118_001   63118   18/12/2018  1   479 0   0   0   0   1
StockOut63119_001   63119   18/12/2018  1   479 0   0   0   0   2
StockOut63119_002   63119   18/12/2018  1   479 0   0   0   0   2
StockOut63120_001   63120   18/12/2018  1   479 0   0   0   0   1
StockOut63121_001   63121   18/12/2018  1   479 0   0   0   0   1
StockOut63122_001   63122   18/12/2018  1   479 0   0   0   0   1
StockOut63123_001   63123   18/12/2018  1   479 0   0   0   0   1
StockOut63124_001   63124   18/12/2018  1   479 0   0   0   0   1
StockOut63125_001   63125   18/12/2018  1   479 0   0   0   0   1
StockOut63126_001   63126   18/12/2018  1   479 0   0   0   0   1
StockOut63127_001   63127   18/12/2018  1   479 0   0   0   0   2
StockOut63127_002   63127   18/12/2018  1   479 0   0   0   0   2
StockOut63128_001   63128   18/12/2018  1   479 0   0   0   0   2
StockOut63128_002   63128   18/12/2018  1   479 0   0   0   0   2
StockOut63129_001   63129   18/12/2018  1   479 0   0   0   0   2
StockOut63130_001   63130   18/12/2018  1   479 0   0   0   0   1
StockOut63131_001   63131   18/12/2018  1   479 0   0   0   0   1
StockOut63132_001   63132   18/12/2018  1   479 0   0   0   0   3
StockOut63132_002   63132   18/12/2018  1   479 0   0   0   0   3
StockOut63132_003   63132   18/12/2018  1   479 0   0   0   0   3
StockOut63133_001   63133   18/12/2018  1   479 0   0   0   0   2
StockOut63133_002   63133   18/12/2018  1   479 0   0   0   0   2
StockOut63134_001   63134   18/12/2018  1   479 0   0   0   0   1
StockOut63135_001   63135   18/12/2018  1   479 0   0   0   0   1
StockOut63136_001   63136   18/12/2018  1   479 0   0   0   0   1
StockOut63137_001   63137   18/12/2018  1   479 0   0   0   0   1
StockOut63138_001   63138   18/12/2018  1   479 0   0   0   0   1
StockOut63140_001   63140   18/12/2018  1   479 0   0   0   0   1
StockOut63141_001   63141   18/12/2018  1   479 0   0   0   0   1
StockOut63142_001   63142   18/12/2018  1   479 0   0   0   0   8
StockOut63142_002   63142   18/12/2018  1   479 0   0   0   0   8
StockOut63142_003   63142   18/12/2018  1   479 0   0   0   0   8
StockOut63142_004   63142   18/12/2018  1   479 0   0   0   0   8
StockOut63142_005   63142   18/12/2018  1   479 0   0   0   0   8
StockOut63142_006   63142   18/12/2018  1   479 0   0   0   0   8
StockOut63142_007   63142   18/12/2018  1   479 0   0   0   0   8
StockOut63142_008   63142   18/12/2018  1   479 0   0   0   0   8
StockOut63143_001   63143   18/12/2018  1   479 0   0   0   0   1
StockOut63144_001   63144   18/12/2018  1   479 0   0   0   0   1
StockOut63145_001   63145   18/12/2018  1   479 0   0   0   0   5
StockOut63145_002   63145   18/12/2018  1   479 0   0   0   0   5
StockOut63145_003   63145   18/12/2018  1   479 0   0   0   0   5
StockOut63145_004   63145   18/12/2018  1   479 0   0   0   0   5
StockOut63145_005   63145   18/12/2018  1   479 0   0   0   0   5

请注意,根据数量,每个序列号都是唯一的...

【问题讨论】:

  • 请不要将数据发布为图像,这对试图帮助您的志愿者没有帮助。将其作为格式化的text 或作为 DDL (CREATE) 和 DML (INSERT) 语句提供。当你编辑你的帖子时,你能否确保你解释从你的样本数据到你预期的结果背后的逻辑。
  • 我已根据您的要求更改了我的问题@Larnu。感谢您的帮助。
  • 我们现在没有样本数据和预期结果。只是预期的结果?在不知道您的数据以前是什么样子的情况下,很难回答。根据您的原始要求查看我的答案,我在其中使用您的数据创建数据集。您可能想要使用 DDL (CREATE) 和 DML (INSERT) 语句,而不是我所说的“VTE”(表表达式)。
  • 我同意@Larnu,但上面实际上是示例数据。我将很快将我的预期结果添加到我的问题中 - (必须快速在 Excel 中手动填充)
  • @Larnu,我已经添加了我的预期结果。感谢您的帮助。

标签: sql-server tsql


【解决方案1】:

一种方法是使用 Tally 表,就像 article (vTally) 中的视图一样。

WITH VTE AS(
    SELECT *
    FROM (VALUES (63564,1 ),
                 (66669,1 ),
                 (66814,4 ),
                 (63707,1 ),
                 (63708,1 ),
                 (63221,1 ),
                 (63222,1 ),
                 (63223,1 ),
                 (63224,1 ),
                 (63226,3 ),
                 (63225,7 ),
                 (63227,1 ),
                 (63228,1 ),
                 (53498,2 ),
                 (53498,2 ),
                 (63230,1 ),
                 (63445,1 ),
                 (63232,1 ),
                 (39478,1 ),
                 (63636,7 ),
                 (63637,1 ),
                 (63638,14),
                 (63639,1 ),
                 (63523,1 ),
                 (63524,3 ),
                 (63525,2 ),
                 (63526,1 ),
                 (63403,1 ),
                 (63404,1 ),
                 (63405,13),
                 (63406,14),
                 (63710,1 ),
                 (63711,1 ),
                 (63712,1 ),
                 (63713,2 ),
                 (63714,1 ),
                 (63715,2 ),
                 (63716,1 ),
                 (63717,1 ),
                 (63718,1 ),
                 (63719,1 ),
                 (63720,1 ),
                 (63721,1 ),
                 (66385,2 ),
                 (52162,1 ),
                 (42458,1 ),
                 (43590,1 ),
                 (63396,1 ),
                 (63397,1 ),
                 (63398,5 )) V(iStockID, fQtyOut))
SELECT V.iStockID,
       V.fQtyOut
FROM VTE V
     JOIN dbo.vTally T ON V.fQtyOut >= T.N
WHERE V.iStockID = 66814;

或者,如果您不想使用 VIEW 或物理表,您可以使用 CTE 创建内联计数表:

WITH N AS(
    SELECT N
    FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL)) N(N)),
Tally AS(
    SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) I
    FROM N N1
         CROSS JOIN N N2
         CROSS JOIN N N3)
SELECT V.iStockID,
       V.fQtyOut
FROM VTE V --Assumes VTE was declared, i just haven't repeated the code
     JOIN Tally T ON V.fQtyOut >= T.I
WHERE V.iStockID = 66814;

【讨论】:

  • 我只是在发布或多或少相同的答案...+1
  • 感谢您的帮助@Larnu,但是我在理解您的查询时遇到了一些困难。我可以修改一下我的问题,让你再看一遍吗?
  • 你对 SQL 有什么不了解的地方,@Birel?如果您认为它不能满足您的需求,请随时更新您的问题。询问时,请尽量具体说明您的要求;那么误解/误解的可能性就会小得多
  • 了解@Larnu,对造成的任何不便深表歉意,并再次感谢您的帮助。我已经更新了我的问题...
【解决方案2】:

我将此作为不同的答案发布,因为自从 OP 最初提出他们的问题以来,问题已经发生了重大变化。

无论如何,这就是他们所追求的 OP。这次我使用的是内联计数表,而不是视图:

--Created table only with the relevant columns for the OP's question
CREATE TABLE dbo.YourTable (SerialNumber varchar(20),
                            iStockID int,
                            fQtyOut tinyint);
INSERT INTO dbo.YourTable (SerialNumber,
                           iStockID,
                           fQtyOut)
VALUES ('StockOut63041_001',63041,2 ),
       ('StockOut63042_001',63042,1 ),
       ('StockOut63043_001',63043,1 ),
       ('StockOut63044_001',63044,2 ),
       ('StockOut63045_001',63045,2 ),
       ('StockOut63046_001',63046,1 ),
       ('StockOut63047_001',63047,1 ),
       ('StockOut63048_001',63048,1 ),
       ('StockOut63049_001',63049,1 ),
       ('StockOut63050_001',63050,3 ),
       ('StockOut63051_001',63051,1 ),
       ('StockOut63052_001',63052,6 ),
       ('StockOut63053_001',63053,1 ),
       ('StockOut63054_001',63054,3 ),
       ('StockOut63055_001',63055,1 ),
       ('StockOut63056_001',63056,9 ),
       ('StockOut63057_001',63057,4 ),
       ('StockOut63058_001',63058,2 ),
       ('StockOut63059_001',63059,1 ),
       ('StockOut63060_001',63060,3 ),
       ('StockOut63061_001',63061,1 ),
       ('StockOut63062_001',63062,2 ),
       ('StockOut63063_001',63063,1 ),
       ('StockOut63064_001',63064,2 ),
       ('StockOut63065_001',63065,1 ),
       ('StockOut63066_001',63066,1 ),
       ('StockOut63067_001',63067,6 ),
       ('StockOut63068_001',63068,2 ),
       ('StockOut63069_001',63069,3 ),
       ('StockOut63070_001',63070,1 ),
       ('StockOut63071_001',63071,2 ),
       ('StockOut63072_001',63072,1 ),
       ('StockOut63073_001',63073,2 ),
       ('StockOut63074_001',63074,3 ),
       ('StockOut63075_001',63075,5 ),
       ('StockOut63076_001',63076,2 ),
       ('StockOut63077_001',63077,5 ),
       ('StockOut63078_001',63078,4 ),
       ('StockOut63079_001',63079,1 ),
       ('StockOut63080_001',63080,1 ),
       ('StockOut63081_001',63081,1 ),
       ('StockOut63082_001',63082,1 ),
       ('StockOut63083_001',63083,3 ),
       ('StockOut63084_001',63084,4 ),
       ('StockOut63085_001',63085,1 ),
       ('StockOut63089_001',63089,2 ),
       ('StockOut63090_001',63090,3 ),
       ('StockOut63091_001',63091,1 ),
       ('StockOut63092_001',63092,1 ),
       ('StockOut63093_001',63093,1 ),
       ('StockOut63094_001',63094,1 ),
       ('StockOut63095_001',63095,1 ),
       ('StockOut63096_001',63096,1 ),
       ('StockOut63097_001',63097,1 ),
       ('StockOut63098_001',63098,3 ),
       ('StockOut63099_001',63099,14),
       ('StockOut63100_001',63100,1 ),
       ('StockOut63101_001',63101,4 ),
       ('StockOut63102_001',63102,1 ),
       ('StockOut63104_001',63104,2 ),
       ('StockOut63105_001',63105,1 ),
       ('StockOut63106_001',63106,1 ),
       ('StockOut63107_001',63107,3 ),
       ('StockOut63108_001',63108,7 ),
       ('StockOut63109_001',63109,1 ),
       ('StockOut63110_001',63110,1 ),
       ('StockOut63111_001',63111,5 ),
       ('StockOut63112_001',63112,1 ),
       ('StockOut63113_001',63113,1 ),
       ('StockOut63114_001',63114,1 ),
       ('StockOut63115_001',63115,3 ),
       ('StockOut63116_001',63116,1 ),
       ('StockOut63117_001',63117,1 ),
       ('StockOut63118_001',63118,1 ),
       ('StockOut63119_001',63119,2 ),
       ('StockOut63120_001',63120,1 ),
       ('StockOut63121_001',63121,1 ),
       ('StockOut63122_001',63122,1 ),
       ('StockOut63123_001',63123,1 ),
       ('StockOut63124_001',63124,1 ),
       ('StockOut63125_001',63125,1 ),
       ('StockOut63126_001',63126,1 ),
       ('StockOut63127_001',63127,2 ),
       ('StockOut63128_001',63128,2 ),
       ('StockOut63129_001',63129,2 ),
       ('StockOut63130_001',63130,1 ),
       ('StockOut63131_001',63131,1 ),
       ('StockOut63132_001',63132,3 ),
       ('StockOut63133_001',63133,2 ),
       ('StockOut63134_001',63134,1 ),
       ('StockOut63135_001',63135,1 ),
       ('StockOut63136_001',63136,1 ),
       ('StockOut63137_001',63137,1 ),
       ('StockOut63138_001',63138,1 ),
       ('StockOut63140_001',63140,1 ),
       ('StockOut63141_001',63141,1 ),
       ('StockOut63142_001',63142,8 ),
       ('StockOut63143_001',63143,1 ),
       ('StockOut63144_001',63144,1 ),
       ('StockOut63145_001',63145,5 );

GO

WITH N AS(
    SELECT N
    FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL)) N(N)),
Tally AS(
    SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) I
    FROM N N1
         CROSS JOIN N N2
         CROSS JOIN N N3),
CTE AS(
    SELECT YT.SerialNumber,
           YT.iStockID,
           YT.fQtyOut,
           V.SerialPrefix,
           CONVERT(int,V.SerialSuffix) AS SerialSuffix
    FROM dbo.YourTable YT
         CROSS APPLY (VALUES(PARSENAME(REPLACE(YT.SerialNumber,'_','.'),2),PARSENAME(REPLACE(YT.SerialNumber,'_','.'),1))) V(SerialPrefix,SerialSuffix))
SELECT C.SerialPrefix + '_' + RIGHT('000' + CONVERT(varchar(3),C.SerialSuffix + T.I - 1),3) AS SerialNumber,
       C.iStockID,
       C.fQtyOut
FROM CTE C
     JOIN Tally T ON C.fQtyOut >= T.I
ORDER BY iStockID;


GO

DROP TABLE dbo.YourTable;

【讨论】:

  • 谢谢@Larnu,我已经复制了你的答案并对它进行了一些更改,以便将数据库中的数据插入YourTable 表中,但是,现在运行它时,我得到了以下错误Arithmetic overflow error converting expression to data type varchar. 我所做的唯一更改是将fQtyOut 的代码从tinyint 更改为float。我可能做错了什么?
  • O 和我还为我需要的那个表创建了额外的必要列。
  • 我正在考虑将我的代码作为答案之一发布,那么您也许可以更改我的答案以使其正常工作?
  • 如果我将tinyint 更改为float,我不会收到您遇到的错误;所以你一定做了别的事情。不要发布错误的答案;使用类似 dbfiddle @Birel .
猜你喜欢
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
  • 2020-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
相关资源
最近更新 更多