Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 2008 独特事件排名第一_Sql Server 2008 - Fatal编程技术网

Sql server 2008 独特事件排名第一

Sql server 2008 独特事件排名第一,sql-server-2008,Sql Server 2008,表名为Events name event_id qty n1 1 8 n1 2 9 n2 2 25 n3 2 29 n4 2 10 n4 3 11 n3 3 57 n2 3 1 n5 3 2 n1 3

表名为Events

name    event_id    qty
n1      1           8
n1      2           9
n2      2           25
n3      2           29
n4      2           10
n4      3           11
n3      3           57
n2      3           1
n5      3           2
n1      3           90
我只想为不同的事件id选择top 1。它的sql查询是什么?谢谢。

试试这个:

WITH CTE AS (SELECT *,RN=ROW_NUMBER() OVER(PARTITION BY event_id ORDER BY event_id)
             FROM Events)
SELECT name,event_id,qty FROM CTE WHERE RN=1
结果:

NAME    EVENT_ID    QTY
n1      1           8
n1      2           9  
n4      3           11
NAME    EVENT_ID    QTY
n4      3           11
n1      2           9
n1      1           8
请参阅中的结果

编辑:

对于数量的降序:

WITH CTE AS (SELECT *,RN=ROW_NUMBER() OVER(PARTITION BY event_id ORDER BY event_id)
FROM Events)
SELECT name,event_id,qty FROM CTE WHERE RN=1 ORDER BY QTY DESC
结果:

NAME    EVENT_ID    QTY
n1      1           8
n1      2           9  
n4      3           11
NAME    EVENT_ID    QTY
n4      3           11
n1      2           9
n1      1           8

@丹德:请看我答案中的编辑。如果您满意,请随意接受答案。@RagingBull-是的。我认为他没有清楚地表达这个问题。对于记录,我的查询作为注释-
选择前1个事件id,按事件id顺序按tqty描述从事件组中计数(数量)为tqty
它应该是
选择名称和事件id的不同组合的前1
,而不仅仅是事件id。谢谢你,我刚刚用这个“按数量描述顺序”编辑了你的代码。是的,我还没有明确说明我想要什么。@RagingBull,事件id将增长,我想限制它。因此,在上面的示例中,如何仅显示2个按事件id排序的asc?@damdeok:Replace
SELECT name,event,
SELECT TOP 2 name,event,