我有一张由客户下达的订单表,我想要的是检查国家订单的哪一部分在历史上来了,我只能通过邮政编码来检查,以获得包含邮政编码SK的订单...意思是它的stockport,类似于从M开始的邮政编码意味着订单来自曼彻斯特,是否可以编写一个可以通过邮政编码计算订单的查询。
Order表的一些字段: OrderNumber OGUID custID名字姓氏地址邮政编码电子邮件授权日期等...
任何建议或协助将不胜感激。 感谢
答案 0 :(得分:1)
如果您有一个包含城市代码和城市名称的表格,那么您可以使用以下内容将orders
表格与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+'%'
您可以使用 GROUP BY
获取每个postcode
中的订单总数:
select postcode, count(postcode) TotalOrdersByPostCode
from orders
group by postcode
如果您想要包含City
,那么您还可以GROUP BY
city:
select city, postcode, count(postcode) TotalOrdersByPostCode
from orders
group by city, postcode
击> <击> 撞击>
答案 1 :(得分: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
答案 2 :(得分:0)
select count(1) over(partition by postcode) as countByPostcode, othecolumnhere
from Order
答案 3 :(得分: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进入吉尔福德等......