按统计在两列中显示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 . . . 你只能接受一个答案。你想投多少就投多少。嗯,我只要改变选区就行了!很好,我只需要换个分区就行了耶!很好