
**最近回答了个关于即时库存的问题,一时半会没弄懂仓位获取的方式~**
- 查阅了相关的资料发现大部分都是写了固定的列,不同客户可能维度的列名也不一致,可能A客户F100003,B客户100010,不同的客户可能又要重新维护一遍代码

==整了个存储过程==
``` 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
```
# 展示效果

==可是怎么把他放到库存查询语句里呢??==
解决方法:[【进阶版】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)
___
如有错误之处,敬请指正。