确定数据集中的正确列

时间:2014-10-08 18:33:19

标签: sql sql-server-2008

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

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

size_bucket    size_desc
     2             XS
     3             S
     4             M
     5             L
     6             XL

大小存储桶对应于另一个包含各种大小描述的表中的列;例如:

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查询,我试图创建以获取size_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

预期的结果是纠正size_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

0 个答案:

没有答案