我有一个查询,其中参数的格式为“GRB',' MIN'' OSH'等等。这些被称为"部门"。它们可以单独传递,也可以在任意数量的列表中传递。这些用于报告中的一个表格中。 问题是,我要阅读其他部门的表将以数字格式显示它们。所以GRB = 02,MIN = 04,OSH = 08.有12个不同的值。 因此,从本质上讲,SSRS报告可能会将所有这些内容传递给" IN"声明。它们必须以这种方式呈现。 我需要找到一种方法将所有这些字母数字代码转换为相应的数字代码。 主要查询字母数字:
dbo.TQMNCR.PlantID IN (@PlantID)
临时表(希望)对应的数值:
ProdTable.DIMENSION2_ in (????????)
答案 0 :(得分:1)
假设dbo.TQMNCR
数字键的列为PlantNumber
,您可以使用此类连接。
SELECT ...
FROM dbo.TQMNCR AS Source
INNER JOIN ProdTable AS Mapping
ON Mapping.DIMENSION2_ = Source.THE_NUMERIC_KEY_COLUMN_YOU_SPEAK_OF
WHERE Mapping.PlantID IN (@PlantID)
或者,如果您不想使用永久表来映射它们,您还可以使用公用表表达式(许多其他选项)。
WITH Mapping_CTE AS (
SELECT 'GRB' AS PlantID, '02' AS PlantNumber
UNION ALL
SELECT 'MIN' AS PlantID, '04' AS PlantNumber
UNION ALL
...
)
SELECT ...
FROM dbo.TQMNCR AS Source
INNER JOIN Mapping_CTE AS Mapping
ON Mapping.PlantNumber = Source.THE_NUMERIC_KEY_COLUMN_YOU_SPEAK_OF
WHERE Mapping.PlantID IN (@PlantID)