加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:44:22 所属栏目:MsSql教程 来源:网络整理
导读:我需要生成一个地址列表,我的客户将发送商品目录.他们想要将特定数量的目录(X)发送到特定的邮政编码(Y)[这与这些邮政编码中的平均收入有关] 我在SQL Server 2008 R2中有2个表:CatalogRequests和AddressList CatalogRequests是我们应该向客户数据库中的每个邮
我需要生成一个地址列表,我的客户将发送商品目录.他们想要将特定数量的目录(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

请求数量的随机地址.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读