我需要为当前一批中的物品生成序列号。
我使用以下代码生成了序列号:
--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
请注意,每个序列号都是基于数量的唯一...
答案 0 :(得分:2)
一种方法是使用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 :(得分:1)
我将其发布为其他答案,因为自从OP最初问他们的问题以来,这个问题已经发生了重大变化。
无论如何,这就是他们追求的目标。这次我使用了一个内联理货表,而不是View:
--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;