Sql 如何根据表2的总计数从表1中获取记录数
表1 表2Sql 如何根据表2的总计数从表1中获取记录数,sql,sql-server,Sql,Sql Server,表1 表2 Rowno name Date ------------------------------------ 1 sathish Dec 21 2 kumar Dec 22 3 sathish Dec 21 4 sathish Dec 22 5 sathish Dec 21 5 sathish Dec 22 我想根据表2的n
Rowno name Date
------------------------------------
1 sathish Dec 21
2 kumar Dec 22
3 sathish Dec 21
4 sathish Dec 22
5 sathish Dec 21
5 sathish Dec 22
我想根据表2的nooftran值从表1中随机获取记录
12月21日,共有3条记录,可显示的记录数为2,应随机抽取
我应该使用什么SQL查询?您可以通过NoofTran连接表和订单
Date NoofTran
-----------------------
Dec22 2
Dec21 1
这将在NoofTran order中为您提供结果提供您的SQL查询它不清楚您在问什么。加上预期的结果,也许我会理解这个问题。在12月21日,nooftran应该取它是2,所以两条记录应该取表1中的值,它应该是随机的。所以rownum 1和3或5将在12月21日出现,表2中的事务数是2,所以两条记录应该取自表1,它应该是随机的。那么rownum 1和3或5也会随机出现你是什么意思?你不在乎哪两行意味着一个解决方案每次都带来前两行是可以的,或者你想要3行中的2行,但每次2行不同,所以当你刷新时,你会看到不同的值?这不是我想要的正确查询…在表2中,12月22日,noofTrans是2,因此只有两条记录从表1中获取它,并且随机地,即在3条记录中,任何两条记录都应该在特定日期出现
select Table1.*
from Table1 T1
inner join Table2 T2
on T1.[Date] = T2.[Date]
order by T2.NoofTran DESC
WITH CTE AS (
SELECT *, ROW_NUMBER()
OVER (
PARTITION BY T1.Date
order by NEWID()
) AS RN
FROM Table1 T1
)
SELECT CTE.RowNo,CTE.Date, CTE.Name
FROM CTE INNER JOIN Table2 T2
ON T2.date=cte.Date
WHERE RN <= T2.NoofTran