如何在SQL Server 2005中从表的列值中查找表的列名?

问题描述

| 我有一个视图,它返回如下结果:
     D1      D2      D3      D1_CODE       D2_CODE      D3_CODE
    ----    ----    ----    ---------     ---------    ---------
   10.00    13.00   14.00      OD           LENGTH     THICKnesS
我在以下选择查询中创建了视图,
    SELECT 
        MKT_MRL_Detail.D1,MKT_MRL_Detail.D2,MKT_MRL_Detail.D3,MAS_SizeType.D1_Code,MAS_SizeType.D2_Code,MAS_SizeType.D3_Code
FROM
        MKT_MRL_Detail INNER JOIN
        STR_Item ON STR_Item.ItemID = MKT_MRL_Detail.ItemID INNER JOIN
        MAS_SizeType ON MAS_SizeType.SizeTypeID = STR_Item.SizeTypeID
我已返回基于两个表的内部联接的视图。 上面的视图仅返回一行。在这里,我要查找哪个列的值为'LENGTH \': 我正在使用sql Server2005。请问有人可以帮忙吗?     

解决方法

        我最好的建议是重新编写视图(甚至可能是数据库),因为这不是一个很好的设计。但是,我怀疑这是可能的。如果不是,这是我的建议:
SELECT *
FROM (
SELECT D1 AS Value,D1_CODE AS Code
FROM view
UNION ALL
SELECT D2,D2_CODE
FROM view
UNION ALL
SELECT D3,D3_CODE
FROM view
) AS myInfo
WHERE Code=\'LENGTH\'
它虽然不漂亮,但可以完成工作。