T-SQL项目表+映射变换 - >新表

时间:2016-02-17 23:41:31

标签: sql-server tsql pivot user-defined-functions unpivot

我希望以最高性能的方式执行以下操作...

我有一个源表[产品]

ColA | ColB | ColC

  AA |  B   |  CD

  AA |  E   |  CD

一个映射规范表[mappings]

TargetField | MatchExpr | ValueExpr
     ColA   |   AA      |    ZZ
     ColA   |   ZZ      |    BB
     ColC   |   CD      |     F

额外点 - 它还可以指定具有值的ValueFields列,例如 ' ColB,ColC'和一个ValueExpr,例如' {0} - {1}'必须应用FORMAT才能获得真正的ValueExpr。

我试图制作一个表值函数

CREATE FUNCTION RuleMappedProducts()
    RETURNS @MPROD TABLE 
    (ColA, ColB, ColC)
    AS
BEGIN
    -- Fill the table variable with the rows for the result set

    RETURN 
END
GO

我在考虑使用Mapping表来为交叉连接做准备,但是缺少数字聚合让我感到困惑。

我想生成一个结果表,其中映射按照映射表指定的顺序应用于列。如果MatchExpr匹配,则将使用ValueExpr更新映射表条目中指定的列。 因此结果将是

    ColA | ColB | ColC |  
     BB  |  B   |    F  
     BB  |  E   |    F

任何帮助将不胜感激!

0 个答案:

没有答案