我需要为导出重新映射一些数据。作为视图从多个表中提取数据。
在视图中,相关列和示例值为:
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