MSSQL - 仓位的标识【动态】获取仓位名称

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

MSSQL - 仓位的标识【动态】获取仓位名称

**最近回答了个关于即时库存的问题,一时半会没弄懂仓位获取的方式~** - 查阅了相关的资料发现大部分都是写了固定的列,不同客户可能维度的列名也不一致,可能A客户F100003,B客户100010,不同的客户可能又要重新维护一遍代码 ![image.webp](/download/01007d461fec9cdc4cb7aaf51d5055e99fd7.webp) ==整了个存储过程== ``` sql -- ============================================= -- Author:老李头 -- Create date: 2023-08-26 -- Description: 根据仓库+仓位标识动态获取仓位名称 -- EXECUTE Mindee_Proc_GetFStockLOCName_Part2 100481,100006 -- ============================================= CREATE PROCEDURE [dbo].[Mindee_Proc_GetFStockLOCName_Part2] @FSTOCKID INT --仓库标识 ,@FSTOCKLOCID int --仓位标识 AS BEGIN SET NOCOUNT ON; DECLARE @STR VARCHAR(100) -- 最终呈现字符串 ,@OUTSTR VARCHAR(100) -- 每次循环返回的仓位名称 ,@SQLStr NVARCHAR(MAX) -- 每次循环的SQL语句 ,@TotalCount INT -- 所有仓位维度总数 ,@TotalRow int -- 获取仓位维度下标 ,@TotalStr VarChar(100) -- 动态列名称 -- 设置默认值 SET @STR ='' SET @TotalStr='' SET @TotalRow = 1 -- 默认从1开始 -- 获取仓库的仓位维度 SELECT FSEQ, T31.FFLEXNUMBER INTO #T_BD_STOCKFLEXITEM FROM T_BD_STOCKFLEXITEM T1 INNER JOIN T_BAS_FLEXVALUES T31 ON T1.FFLEXID = T31.FID WHERE FSTOCKID = @FSTOCKID -- 赋值所有仓位维度总数 SELECT @TotalCount = COUNT(*) FROM #T_BD_STOCKFLEXITEM -- 开始循环 WHILE @TotalRow <= @TotalCount BEGIN --获取维度动态列名称 FF100001 SELECT @TotalStr = FFLEXNUMBER FROM #T_BD_STOCKFLEXITEM WHERE FSEQ=@TotalRow --获取 动态拼接 仓位名称 SET @SQLStr = N'SELECT @NAME = V'+ CAST(@TotalStr AS varchar(50)) +'.FNAME FROM T_BAS_FLEXVALUESDETAIL FVD LEFT JOIN T_BAS_FLEXVALUESENTRY_L AS V'+ CAST(@TotalStr AS varchar(50)) +' ON FVD.'+ CAST(@TotalStr AS varchar(50)) +'=V'+ CAST(@TotalStr AS varchar(50)) +'.FENTRYID AND V'+ CAST(@TotalStr AS varchar(50)) +'.FLOCALEID = 2052 WHERE FID='+CAST(@FSTOCKLOCID AS varchar(50))+'' --PRINT @SQLStr EXEC sp_executesql @SQLStr,N'@NAME VARCHAR(100) OUTPUT',@OUTSTR OUTPUT --如果仓位名称不等于空 字符串拼接起来 IF ISNULL(@OUTSTR,'') <> '' BEGIN SET @STR = @STR +'.'+ @OUTSTR END SET @TotalRow = @TotalRow + 1; END -- 返回数据默认去掉第一个【.】 SELECT SUBSTRING(@STR, 2, LEN(@STR)) AS FNAME -- 删除临时表 DROP TABLE #T_BD_STOCKFLEXITEM END ``` # 展示效果 ![image.webp](/download/0100ebbf98871c4e4b55bf0bc85f1c2d1ee3.webp) ==可是怎么把他放到库存查询语句里呢??== 解决方法:[【进阶版】MSSQL - 仓位的标识【动态】获取仓位名称](https://wenku.my7c.com/article/483912206501663744?productLineId=1) # 相关资料 [仓位数据查询-学习笔记](https://wenku.my7c.com/article/329304734639103488?productLineId=1#0) [【库存管理】-仓位相关说明](https://wenku.my7c.com/article/24803?productLineId=1) [根据仓位ID查询仓位信息](https://wenku.my7c.com/article/290430888922655744?productLineId=1) ___ 如有错误之处,敬请指正。

MSSQL - 仓位的标识【动态】获取仓位名称

**最近回答了个关于即时库存的问题,一时半会没弄懂仓位获取的方式~**- 查阅了相关的资料发现大部分都是写了固定的列,不同客户可能维度的...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息