从连接的 table 中动态抓取特定列

Dynamically grab a specific column from a joined table

我有一个非常复杂的查询,它从近 10 table 秒中提取数据并且还在不断增长,我需要实现一些不寻常的事情。主table(FROM table)有一个名为SIZEPOS的字段,它是一个从1到25的索引号。一个连接的table别名siz 有适当的连接字段(一些外国 ID)到主 table,还有字段,如 SIZE1SIZE2、...、SIZE25、其中每个都包含一个大小值,即 SIZE1 可能包含值 6,SIZE2 值 8,等等... 所以我想要的是在我的查询中包含加入 table 的特定 SIZE+[SIZEPOS] 字段。换句话说,如果 SIZEPOS 持有特定产品的值 3,我只想从所有 SIZE1SIZE2、[=25 中获取字段 siz.SIZE3 =]、SIZE4、等等...

我把情况简单化了,居然可以给你准备一个fiddle!所以我需要实现的是为 SELECT 查询的每一行包含适当的 SIZE{\d} 字段而不是我使用的硬编码 SIZE1 ...从我读过的内容来看,概念称为动态列,需要一个变量和一个 EXEC 命令,但我对 SQL 服务器的了解还处于起步阶段,所以它完全超出了我的范围...

SELECT sub.ITEID, sub.SUBSTITUTECODE, prod.MAINSZLID, sub.SIZEPOS, siz.SIZE1
FROM @SUBSTITUTE AS sub
INNER JOIN @MATERIAL AS prod ON prod.ID = sub.ITEID
INNER JOIN @SIZELIST AS siz ON siz.CODEID = prod.MAINSZLID;

fiddle可以找到here

..

CHOOSE(sub.sizepos, SIZE1, SIZE2, SIZE3, SIZE4, SIZE5, SIZE6, SIZE7, SIZE8, SIZE9, SIZE10, SIZE11, SIZE12, SIZE13, SIZE14, SIZE15, SIZE16, SIZE17, SIZE18, SIZE19, SIZE20, SIZE21, SIZE22, SIZE23, SIZE24, SIZE25)