-3

我有一张客户下的订单表,我想要检查历史上来自哪个国家/地区的订单,我只能通过邮政编码检查这个,例如邮政编码为 SK 的订单......意味着它的库存港, 同样从 M .. 开始的邮政编码表示订单来自曼彻斯特,是否可以编写一个可以按邮政编码计算订单的查询。

Order 表的一些字段:OrderNumber OGUID custID firstname last name address postcode email authorization date 等...

任何建议或帮助将不胜感激。谢谢

4

4 回答 4

1

这是可行的方法......但对于一个庞大的列表来说它可能会变得太长。我将尝试找到解决该问题的方法。

SELECT
  CASE
    WHEN postcode LIKE 'SK%'   THEN 'SK'
    WHEN postcode LIKE 'M%' THEN 'M'
  END AS group_by_value
, COUNT(*) AS group_by_count
FROM [Table] a
GROUP BY 
  CASE
    WHEN postcode LIKE 'SK%'   THEN 'SK'
    WHEN postcode LIKE 'M%' THEN 'M'
  END
于 2013-01-22T10:16:44.540 回答
1

如果您有一个包含城市代码和城市名称的表,那么您可能可以使用类似以下内容的内容,orders使用 a 将您的表连接到代码LIKE

select o.postcode,
  c.city,
  count(c.code) over(partition by c.code) Total
from orders o
inner join codes c
  on o.postcode like '%'+c.code+'%'

请参阅带有演示的 SQL Fiddle

您可以使用GROUP BY来获取每个中的订单总数postcode

select postcode, count(postcode) TotalOrdersByPostCode
from orders
group by postcode

如果你想City包含,那么你也可以GROUP BY城市:

select city, postcode, count(postcode) TotalOrdersByPostCode
from orders
group by  city, postcode

于 2013-01-22T10:04:46.290 回答
0

你有没有尝试过这样的事情?我认为邮政编码的城镇部分将是前 1 或 2 个字节,后面用数字分隔。所以这会给你前几个字母。

select substring(postcode,1, patindex('%[0-9]%',postcode)-1), count(*)
from Order
group by substring(postcode,1, patindex('%[0-9]%',postcode)-1)

然后您必须将 M 解码为曼彻斯特,将 W 解码为西伦敦,将 GU 解码为吉尔福德等...

于 2013-01-22T15:36:57.063 回答
0
select count(1) over(partition by postcode) as countByPostcode, othecolumnhere
from Order
于 2013-01-22T10:04:16.000 回答