按统计在两列中显示SQL MAX

按统计在两列中显示SQL MAX,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个疑问: DECLARE @startTime DATETIME = DATEADD(MINUTE, -100, GETDATE()) --StartTime SELECT COUNT(*) Frecuency, mes.receivedqty AS Qty, ac.item AS Item FROM mesReservationReceipts mes (nolock) INNER JOIN ACCS_Reservation ac (nolock)

我有一个疑问:

DECLARE @startTime DATETIME = DATEADD(MINUTE, -100, GETDATE()) --StartTime

SELECT   
    COUNT(*) Frecuency, mes.receivedqty AS Qty, ac.item AS Item 
FROM 
    mesReservationReceipts mes (nolock) 
INNER JOIN 
    ACCS_Reservation ac (nolock) ON ac.IDReservation = mes.idReservation 
WHERE
    ac.item IN (SELECT ac2.item 
                FROM mesReservationReceipts m2 
                INNER JOIN ACCS_Reservation ac2 ON ac2.IDReservation = m2.idReservation
                WHERE m2.receivedate > @startTime)
GROUP BY
    mes.receivedqty, ac.item
我得到这个结果,但只有我想要黄色突出显示的行-我如何才能得到这些?请帮忙


注意:我试过使用
MAX(Frequency)
,但这不起作用,因为它应该按数量分组,情况相同。我输入了一个
MAX(Qty)
,但例如,如果
Qty
大于
Statistic
,则将结果添加到表中(我只需要实际的统计数量)。

您可以使用
行数()
获得每列中的最高金额。然后筛选:

select item, Frecuency, qty
from (select ac.item as Item, count(*) as Frecuency, mes.receivedqty as Qty,
             row_number() over (order by count(*) desc) as seqnum_f,
             row_number() over (order by mes.receivedqty desc) as seqnum_r
      from mesReservationReceipts mes join
           ACCS_Reservation ac 
           on ac.IDReservation = mes.idReservation 
      where ac.item in (select ac2.item
                        from mesReservationReceipts m2 inner join
                             ACCS_Reservation ac2 
                             on ac2.IDReservation = m2.idReservation
                        where m2.receivedate > @startTime
                       )
      group by mes.receivedqty, ac.item
     ) ma
where 1 in (seqnum_f, seqnum_r);

如果您想要重复,请使用
rank()
,以防最高值有重复项。

您可以使用
行编号()
来获得每列中的最高金额。然后筛选:

select item, Frecuency, qty
from (select ac.item as Item, count(*) as Frecuency, mes.receivedqty as Qty,
             row_number() over (order by count(*) desc) as seqnum_f,
             row_number() over (order by mes.receivedqty desc) as seqnum_r
      from mesReservationReceipts mes join
           ACCS_Reservation ac 
           on ac.IDReservation = mes.idReservation 
      where ac.item in (select ac2.item
                        from mesReservationReceipts m2 inner join
                             ACCS_Reservation ac2 
                             on ac2.IDReservation = m2.idReservation
                        where m2.receivedate > @startTime
                       )
      group by mes.receivedqty, ac.item
     ) ma
where 1 in (seqnum_f, seqnum_r);

如果您想要重复,请使用
rank()
,以防最高值有重复项。

您可以这样编写

SELECT * FROM(SELECT Frequency,Receivedqty,Item,
 ROW_NUMBER() OVER(Partition by Item ORDER BY Quantity desc) as RowId
FROM (
  ----your query-----
  ))as q
Where q.RowId = 1

你可以这样写

SELECT * FROM(SELECT Frequency,Receivedqty,Item,
 ROW_NUMBER() OVER(Partition by Item ORDER BY Quantity desc) as RowId
FROM (
  ----your query-----
  ))as q
Where q.RowId = 1

好的,但在过去的100分钟内,注册了一个新项目,在“where 1 in(seqnum_f,seqnum_r)”中只显示两个项目,我如何才能显示更多?Wokrs也是,只是我必须使用分区和顺序by@CarlosR93 . . . 你只能接受一个答案。你可以随意投票。好的,但在过去的100分钟里,注册了一个新项目,在“where 1 in(seqnum_f,seqnum_r)”中,只显示两个项目,我如何才能显示更多?Wokrs也是,只是我必须使用分区和顺序by@CarlosR93 . . . 你只能接受一个答案。你想投多少就投多少。嗯,我只要改变选区就行了!很好,我只需要换个分区就行了耶!很好