从SQL Server表中检索每个类别的不同行数

前端之家收集整理的这篇文章主要介绍了从SQL Server表中检索每个类别的不同行数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要生成一个地址列表,我的客户将发送商品目录.他们想要将特定数量的目录(X)发送到特定的邮政编码(Y)[这与这些邮政编码中的平均收入有关]

我在sql Server 2008 R2中有2个表:CatalogRequests和AddressList

CatalogRequests是我们应该向客户数据库中的每个邮政编码发送多少目录的列表:

|  Zip  |  QuantityRequested  |
-------------------------------
| 12345 |         150         |
| 13445 |         800         |
| 45678 |         200         |
| 41871 |         350         |
| 77777 |         125         |

AddressList就是这样,一个地址列表=)

|  Name  |     Address1    |  Address2  |      City     |  State  |  Zip  |
---------------------------------------------------------------------------
|  Bruce | 1 BatCave Dr    |            |  Gotham City  |   IL    | 12345 |
|  Clark | 9 Smallville St |   Apt A    |  Metropolis   |   NY    | 45678 |
|  Thor  | 5 Valhalla Way  |            |    Asgard     |   ??    | 77777 |

我试着用SQL查询做了一段时间,然后放弃并编写了一个小的C#程序来做我需要做的事情(基本上,生成一堆SQL查询 – 一个用于CatalogRequests中的每个记录) .

我的问题是,我怎么能用一个SQL查询完成这个?我只是好奇这一点,似乎有办法做到这一点,我只是遗漏了一些东西.或者可能不可能,我很疯狂=)

结果集将是来自AddressList的记录,其满足CatalogRequest中的要求(例如,150个邮政编码为12345的记录,800个记录,邮政编码为13445,等等).

解决方法

嗯……这样的事情怎么样:
;with addressListWithID 
AS 
(
    SELECT name,address1,adress2,city,state,zip,ROW_NUMBER() OVER(partition by zip   order by newid()) as Row
    FROM AddressList 
)
SELECT A.name,A.address1,A.adress2,A.city,A.state,A.zip
FROM addressListWithID A 
    INNER JOIN CatalogRequests C
        ON C.zip = A.zip 
            AND A.row <= C.QuantityRequested

请求数量随机地址.

原文链接:https://www.f2er.com/mssql/78004.html

猜你在找的MsSQL相关文章