Sql 确定数据集中的正确列

Sql 确定数据集中的正确列,sql,sql-server-2008,Sql,Sql Server 2008,我需要为导出重新映射一些数据。数据作为视图从多个表中提取 在视图中,相关列和示例值为: size_bucket size_desc 2 XS 3 S 4 M 5 L 6 XL Size bucket对应于另一个表中包含各种大小描述的列;例如: size02 size03 size04 size05

我需要为导出重新映射一些数据。数据作为视图从多个表中提取

在视图中,相关列和示例值为:

size_bucket    size_desc
     2             XS
     3             S
     4             M
     5             L
     6             XL
Size bucket对应于另一个表中包含各种大小描述的列;例如:

size02    size03    size04    size05    size06
  XS         S        M         L          XL
问题是,对于导出,size_bucket的值不正确,并且与另一个表中的相关sizexx列不对应。因此,我有一个包含正确映射的表,其中包含各种sizexx列的正确值

我需要做的是确定哪个列包含正确的值,并将size_bucket的值切换为正确的对应sizexx列

因此,映射表中的正确值是

size02    size03    size04    size05    size06    size07
  XXS       XS        S          M        L         XL
最后,这里是一个示例psuedo查询,我正试图创建该查询,以获得大小_bucket的正确值:

SELECT  
      CASE (u.sizebucket)
         WHEN '1' THEN u.sizebucket 
         WHEN '2' THEN 
             CASE WHEN u.size_desc = k.size02 THEN '2' END
             CASE WHEN u.size_desc = k.size03 THEN '3' END
             /* and so on for all the different sizexx columns */
         WHEN '3' THEN 
             /* REPEAT ABOVE CODE */
         /* REPEAT WHEN FOR ALL SIZES */
       END AS size_bucket,
       k.size_name, u.size_desc, k.size01, k.size02, k.size03, k.size04, 
       k.size05, k.size06, k.size07, k.size08, k.size09, k.size10, k.size11, 
       k.size12, k.size13, k.size14, k.size15
FROM ExportView u
INNER JOIN size_map_table k ON u.Size_Code = k.size_code
如果您有任何关于如何以更简单的方式进行此操作的建议或想法,我们将不胜感激。我甚至还不确定我在这里的想法是否可行

以下是根据您的请求提供的一些数据示例:


对于视图,所有列都是nvarchar,映射表中也是如此

视图中的一些示例数据:

size_code    size_desc    size_bucket
   LDS          XS             3
   LDS           S             4
   LDS           M             5
   LDN           0             2
   LDN           2             3
   LDN           4             4
在映射表中:

size_code    size01    size02    size03    size04    size05
   LDS                   XS
   LDS                              S
   LDS                                       M
   LDN         0
   LDN                   2
   LDN                              4
预期结果将是更正大小_bucket的值,如下所示:

size_code    size_desc    size_bucket
   LDS          XS             2
   LDS           S             3
   LDS           M             4
   LDN           0             1
   LDN           2             2
   LDN           4             3

除了所需的输出之外,还需要一些ddl和样本数据。我们在这里帮不了什么忙,因为我们不知道您的数据是什么样子的。sqlfiddle.com是一个很好的起点。对于视图,所有列都是nvarchar,映射表中也是如此。视图中的一些示例数据:Ooops,点击enter。编辑…好的,请添加预期结果。非常感谢。我会留下这个作为提醒,稍后再回来,但我仍然不确定是否理解你的要求。