带有Postalcode的Sql NTILE()函数

时间:2011-10-14 10:06:20

标签: sql

我试图在相同数量的套牌中拆分一些记录。它与sql Ntile(20)函数一起工作正常。然而问题是它也拆分了邮政编码。拆分应该在邮政编码中进行。

Select (NTILE(20) OVER(ORDER BY PostalCode ASC)) AS 'DeckNumber' 
from xxx 
order by Postalcode

任何想法如何解决这个问题?

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您正在使用SQL Server - 您应该能够这样做:

SELECT 
   NTILE(20) OVER(PARTITION BY PostalCode ORDER BY PostalCode ASC) AS 'DeckNumber' 
FROM dbo.xxx 
ORDER BY Postalcode

这会按Postalcode将您的数据“划分”为多个组,并且在每个组中,将应用NTILE(20)功能。

也许你想在ORDER BY函数中使用不同的NTILE...OVER()子句 - 因为你已经按Postalcode进行了分区,所以按顺序排序并不是真的很多感觉...