
**最近回答了个关于即时库存的问题,一时半会没弄懂仓位获取的方式~**
- 查阅了相关的资料发现大部分都是写了固定的列,不同客户可能维度的列名也不一致,可能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 FV