我有一张客户下的订单表,我想要检查历史上来自哪个国家/地区的订单,我只能通过邮政编码检查这个,例如邮政编码为 SK 的订单......意味着它的库存港, 同样从 M .. 开始的邮政编码表示订单来自曼彻斯特,是否可以编写一个可以按邮政编码计算订单的查询。
Order 表的一些字段:OrderNumber OGUID custID firstname last name address postcode email authorization date 等...
任何建议或帮助将不胜感激。谢谢
我有一张客户下的订单表,我想要检查历史上来自哪个国家/地区的订单,我只能通过邮政编码检查这个,例如邮政编码为 SK 的订单......意味着它的库存港, 同样从 M .. 开始的邮政编码表示订单来自曼彻斯特,是否可以编写一个可以按邮政编码计算订单的查询。
Order 表的一些字段:OrderNumber OGUID custID firstname last name address postcode email authorization date 等...
任何建议或帮助将不胜感激。谢谢
这是可行的方法......但对于一个庞大的列表来说它可能会变得太长。我将尝试找到解决该问题的方法。
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
如果您有一个包含城市代码和城市名称的表,那么您可能可以使用类似以下内容的内容,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+'%'
您可以使用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
你有没有尝试过这样的事情?我认为邮政编码的城镇部分将是前 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 解码为吉尔福德等...
select count(1) over(partition by postcode) as countByPostcode, othecolumnhere
from Order