sql - TSQL根据select语句的整数结果插入值
问题描述
我正在运行以下查询:
select
max(count) Max
from
(select
count(iStockID) Count
from
_etblInvJrBatchLines
group by
iStockID) X
如您所知,结果是一个整数;在这种情况下,结果是 5。
基于上述结果,我需要将通用值插入另一个表,如下所示:
INSERT INTO _etblInvJrBatches
(
cInvJrNumber -- IJ0001 Plus 1
, cInvJrDescription -- Inventory Journal Batch
, cInvJrReference -- IJR10001 Plus 1
, iCreateAgentID -- 1
, bClearAfterPost -- 1
, bAllowDupRef -- 1
, bAllowEditGLContra -- 0
, iNewLineDateOpt -- 0
, iNewLineRefOpt -- 0
, cNewLineRefDef -- ''
, bNewLineRefInc -- 0
, iNewLineDescOpt -- 0
, cNewLineDescDef -- ''
, bNewLineDescInc -- 0
, iNewLineProjectOpt -- 0
, iNewLineProjectDefID -- 0
, iNewLineWarehouseOpt -- 0
, iNewLineWarehouseDefID -- 0
, bJustCleared -- 0
, iTransactionCode -- 31 (select TrCodeID where TrCode = 'ADJ')
)
SELECT
'IJ000' -- Plus 1
, 'Inventory Journal Batch'
, 'IJR1000' -- Plus 1
, 1
, 1
, 1
, 0
, 0
, 0
, ''
, 0
, 0
, ''
, 0
, 0
, 0
, 0
, 0
, 0
, (select idTrCodes from TrCodes where Code = 'ADJ')
唯一的问题是,它只插入一次。
如何根据从第一个 select 语句中获得的结果插入 5 次?
也就是说,如果整数结果为24,则需要导入/插入上面的24次。
谢谢你的帮助。
阿蒂。
解决方案
有很多方法可以做到这一点。INSERT 只在目标表中插入一行。最终,您将不得不循环插入。
可能的解决方案...
在数据库中循环...
declare @count int = (select
max(count) Max
from
(select
count(iStockID) Count
from
_etblInvJrBatchLines
group by
iStockID) X)
declare @increment int =1
while @increment <= @count
{
-- do your insert here...
@increment = @increment +1
}
在您的客户端代码中执行循环。从初始查询中检索计数值
For increment = 1 to @count
'execute SQL to do insert here...
Next increment
或者更好(正如@scsimon 暗示的那样)......
For increment = 1 to @count
'build the VALUES () clauses for your insert statement...
Next
'execute your insert statement
我没有意识到 T-SQL 在 INSERT 中允许多个 VALUES 子句。谢谢@scsimon!
如果是我,我会在客户端使用代码而不是在数据库中执行所有这些操作。我是老派,我不认为像我的第一个示例那样在数据库中构建这样的解决方案时可以很好地扩展。
推荐阅读
- angular - 属性网格的角度反应形式
- flutter - sqfentity 在每个运行的应用程序上初始化数据库
- amazon-web-services - Gremlin 中每个节点的广度优先限制?
- javascript - 当我尝试在 React 中使用 WebXR 时,我不断看到“无法在 'XRSystem' 上执行 'requestSession':已经有一个活动的、身临其境的 XRSession”
- javascript - 尝试切换状态但收到 TypeError:drawer.setState 不是函数
- api - 是否有任何 API 支持 UPI 付款?
- c# - Web API 日志有时会在生产中跳过
- javascript - 为什么 app.put() 不更新 mongodb 中的文档?
- outlook - 日志消息中的 OriginalEnvelopeRecipients 总是由交换服务器编码?
- python - django中第一个访问令牌过期后用户注销