传入的参数的表格格式错误

时间:2015-04-15 14:55:52

标签: sql sql-server tsql

我有一个查询,其中参数的格式为“GRB',' MIN'' OSH'等等。这些被称为"部门"。它们可以单独传递,也可以在任意数量的列表中传递。这些用于报告中的一个表格中。 问题是,我要阅读其他部门的表将以数字格式显示它们。所以GRB = 02,MIN = 04,OSH = 08.有12个不同的值。 因此,从本质上讲,SSRS报告可能会将所有这些内容传递给" IN"声明。它们必须以这种方式呈现。 我需要找到一种方法将所有这些字母数字代码转换为相应的数字代码。 主要查询字母数字:

dbo.TQMNCR.PlantID IN (@PlantID)

临时表(希望)对应的数值:

ProdTable.DIMENSION2_ in (????????)

1 个答案:

答案 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)