Sql 如何根据表2的总计数从表1中获取记录数

Sql 如何根据表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

表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的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