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