【发布时间】:2014-12-12 02:41:07
【问题描述】:
我需要根据他们的邮政编码将我的客户分成 3 组。
在客户数据库中有 2 个字段可以包含邮政编码。
街道地址 Zip 是主要的,如果用户没有输入 Zip 作为街道地址,则使用邮政地址。
有时两者都为 NULL,可能输入了非法值。
所以我首先需要获取带有 Case 语句的 ZIP:
案例 当 streetAddress.zip 不为 NULL 并且 streetAddress.zip 在 '0' 和 '99999' 之间时,则 streetAddress.zip 当 postalAddress.zip 不为 NULL 且 postalAddress.zip 在 '0' 和 '99999' 之间时, postalAddress.zip 否则 NULL 结束 )'邮政编码',
但现在我想在下一列中根据“邮政编码”进行选择,但似乎无法使用上一列中的值。
有点像 案子 当 PostCode 介于“00000”和“33333”之间时,则为“Zone1” 当 PostCode 介于“33334”和“66666”之间时,则为“Zone2” 当 PostCode 介于“66669”和“99999”之间时,则为“Zone3” 结束
最后,我试图创建一个视图,然后保存 PostCode 和 Zone 值。
【问题讨论】:
-
COALESCE(AddressZip, PostalZip) ?
-
旁注:您实际上想要创建一个表(可能还有一个关联的物化视图)来处理您的 zip->zone 范围转换。这使得更新变得微不足道(无需触摸进行转换的查询),甚至可以完全防止某些类型的配置错误(即重叠范围)。
标签: sql sql-server-2008 tsql