Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从按一个字段分组的笛卡尔连接中选择随机记录_Sql Server - Fatal编程技术网

Sql server 从按一个字段分组的笛卡尔连接中选择随机记录

Sql server 从按一个字段分组的笛卡尔连接中选择随机记录,sql-server,Sql Server,假设一个随机数据集有一个有意的笛卡尔连接,是否可以为每个用户名提取一个唯一的记录 例如,我的数据集t2: UserName City State Zip bradley Eagle Lake TX 77434 bradley Hudsonville MI 49426 bradley Egan LA 70531 will756 Twin R

假设一个随机数据集有一个有意的笛卡尔连接,是否可以为每个用户名提取一个唯一的记录

例如,我的数据集t2:

UserName     City           State      Zip
bradley      Eagle Lake     TX         77434
bradley      Hudsonville    MI         49426
bradley      Egan           LA         70531
will756      Twin Rocks     PA         15960
will756      Palm           PA         18070
will756      Thornton       KY         41855
这是使用笛卡尔连接创建的。现在我想为布拉德利选一张唱片,为威尔756选一张唱片,我不在乎是哪张唱片

你会怎么做

为了完整性起见,以下是我编写的SQL,以帮助我实现目标:

select top 10 percent row_number() OVER (ORDER BY tmpZipCodes.Place,tmpZipCodes.StateCode,tmpZipCodes.ZipCode) n,tmpZipCodes.Place as UserCity, tmpZipCodes.StateCode as UserState, tmpZipCodes.ZipCode as UserZip 
into #t1
from [tmpDropDowns]
inner join tmpZipCodes on tmpZipCodes.uStateCode = tmpdropdowns.StoredValue
where tmpdropdowns.DDLName = 'ddlState' and CountryCode = 'US'
order by newid()


select member_login.username as UserName, #t1.UserCity, #t1.UserState, #t1.UserZip 
into #t2
from member_login, #t1

如果您使用的是sql 2008+,则可以按用户名将行号应用于每一行和分区。。然后,根据上面的信息,选择行数为1的所有行,我怎么写呢?事实上,考虑到这是笛卡尔式的,我想我最终会得到每个用户名都使用相同的城市/州/ZipYou在第一次查询中已经使用了行数。为什么你不能在Jamie的评论中调整解决方案?