【发布时间】:2015-06-22 08:57:57
【问题描述】:
我目前正在编写一份报告,其中显示了我们销售团队涵盖的所有邮政编码。
每个团队涵盖 100 多个邮政编码。我想做的是创建一个报告,将客户带回邮政编码中。目前,我的代码如下所示。
SELECT * FROM tbl_ClientFile
WHERE CLNTPOST1 LIKE ('B79%')
OR CLNTPOST1 LIKE ('BB1%')
OR CLNTPOST1 LIKE ('BB10%')
OR CLNTPOST1 LIKE ('BB11%')
OR CLNTPOST1 LIKE ('BB12%')
OR CLNTPOST1 LIKE ('BB18%')
OR CLNTPOST1 LIKE ('BB2%')
OR CLNTPOST1 LIKE ('BB3%')
OR CLNTPOST1 LIKE ('BB4%')
OR CLNTPOST1 LIKE ('BB5%')
OR CLNTPOST1 LIKE ('BB6%')
OR CLNTPOST1 LIKE ('BB8%')
OR CLNTPOST1 LIKE ('BB9%')
OR CLNTPOST1 LIKE ('BB94%')
OR CLNTPOST1 LIKE ('BD1%')
OR CLNTPOST1 LIKE ('BD10%')
OR CLNTPOST1 LIKE ('BD11%')
OR CLNTPOST1 LIKE ('BD12%')
OR CLNTPOST1 LIKE ('BD13%')
OR CLNTPOST1 LIKE ('BD14%')
OR CLNTPOST1 LIKE ('BD15%')
OR CLNTPOST1 LIKE ('BD16%')
OR CLNTPOST1 LIKE ('BD17%')
OR CLNTPOST1 LIKE ('BD18%')
OR CLNTPOST1 LIKE ('BD19%')
OR CLNTPOST1 LIKE ('BD2%')
OR CLNTPOST1 LIKE ('BD20%')
OR CLNTPOST1 LIKE ('BD21%')
OR CLNTPOST1 LIKE ('BD22%')
OR CLNTPOST1 LIKE ('BD3%')
OR CLNTPOST1 LIKE ('BD4%')
OR CLNTPOST1 LIKE ('BD5%')
OR CLNTPOST1 LIKE ('BD6%')
我希望有一种更快、更简单的方法来做到这一点。任何建议将不胜感激。有没有办法为每个销售团队创建一个变量,例如@SalesTeam1 = SELECT * FROM tbl_ClientFile WHERE POSTCODE1 like '' or like ''
真的只是在寻找想法。干杯
【问题讨论】:
-
为什么不使用一个表格来关联团队及其邮政编码?然后,您可以通过简单的内部连接来解决这个问题。
-
@Luaan +1,但看起来,我会选择
Town表和Team_Town关系表:看起来,甚至没有Town表。 -
我确实考虑过为此创建一个表,然后进行内部连接。问题是团队是动态的,他们不断地改变他们所覆盖的领域。因此,他们可能会在一周内覆盖德文郡,然后在下周覆盖斯温顿的所有邮政编码。
-
请注意,您的条件有很多冗余...例如。 BD10% 到 BD19% 被条件 BD1% 覆盖
-
那么你应该建立一个有2列
Town,PostCode的表,或者如果适用,可以添加Country。
标签: sql sql-server tsql variables sql-like