有人对如何更好地重构以下有任何建议吗?我已重命名项目名称以简化。
我只继承了这个(用于导入过程),对我来说它看起来不是很有效,尤其是函数中的硬编码值。我正在考虑将硬编码的值放入表中并引用它而不是函数,但我不确定如何根据查询中的重复列来完成这项工作。
MyTable
MyTableId INT,
MyTableOtherColumn VARCHAR(100),
MyTableDesc1 VARCHAR(10),
MyTableDesc2 VARCHAR(10),
. . .
MyTable24 VARCHAR(10),
MyTable25 VARCHAR(10),
etc.
MyFunction
RETURNS @myFunctionTable TABLE
(
myFunctionDesc VARCHAR(256),
myFunctionCode VARCHAR(10)
)
AS
BEGIN
INSERT INTO @myFunctionTable (myFunctionDesc, myFunctionCode) VALUES ('My Function Desc 1', 'MYCODE1');
INSERT INTO @myFunctionTable (myFunctionDesc, myFunctionCode) VALUES ('My Function Desc 2', 'MYCODE2');
. . .
INSERT INTO @myFunctionTable (myFunctionDesc, myFunctionCode) VALUES ('My Function Desc 99', 'MYCODE99');
INSERT INTO @myFunctionTable (myFunctionDesc, myFunctionCode) VALUES ('My Function Desc 100', 'MYCODE100');
END
SELECT
MyTableId,
MyTableOtherColumn,
. . .
(SELECT myFunctionCode FROM MyFunction() WHERE MyFunctionDesc = MyTableDesc1),
(SELECT myFunctionCode FROM MyFunction() WHERE MyFunctionDesc = MyTableDesc2),
. . .
(SELECT myFunctionCode FROM MyFunction() WHERE MyFunctionDesc = MyTableDesc24),
(SELECT myFunctionCode FROM MyFunction() WHERE MyFunctionDesc = MyTableDesc25),
FROM myTable T
JOIN . . .
WHERE . . .