在 SQL Server 查询中复制 MS Access“First”功能

2024-03-25

我对 SQL Server 非常陌生,所以我现在道歉。

我有一张桌子,我想要 GroupByfield1并返回field2中具有最高关联计数的记录counted场地。我通常会在 MS ACCESS 中使用 2 个查询执行此操作,第一个查询按降序返回数据,第二个查询使用 First() 函数选择第一个记录,如下所示:-

Query 1

SELECT t.field1, t.field2, Count(t.counted) AS count1
FROM Table1 AS t
WHERE (((t.counted)=2))
GROUP BY t.field1, t.field2
ORDER BY t.field1, Count(t.counted) DESC;

查询 2(基于上面的查询 1)

SELECT q.field1, First(q.field2) AS firstoffield2
FROM q
GROUP BY q.field1;

我正在寻找的源数据和查询结果 https://docs.google.com/spreadsheet/ccc?key=0Ana40VqkvVtRdHhVUlVjRnBFN0c4VnFoOFNaZ3dSQnc

我很难尝试在 SQL Server 2008 查询中获得与上述相同的结果。有人可以帮忙吗? (请提供我需要使用的精确 SQL)。

以下是数据的子集和结果示例:-

Table1

field1 ¦ field2 ¦ counted
10     ¦ 20     ¦ 2
10     ¦ 30     ¦ 2
10     ¦ 20     ¦ 2
20     ¦ 30     ¦ 0
20     ¦ 40     ¦ 0
20     ¦ 50     ¦ 1
20     ¦ 50     ¦ 2
20     ¦ 60     ¦ 1

查询1结果(按字段1分组,“计数”字段记录为“2”的计数)

field1 ¦ field2 ¦ count1
10     ¦ 20     ¦ 2
10     ¦ 30     ¦ 1
20     ¦ 50     ¦ 1

查询2结果(我想从SQL获得的输出)

field1 ¦ firstoffield2
10     ¦ 20
20     ¦ 50

我希望这能有所帮助,谢谢大家。


WITH
  q AS
(
  Put your query one here
)
,
  sequenced AS
(
  SELECT
    ROW_NUMBER() OVER (PARTITION BY field1 ORDER BY count1 DESC) AS sequence_id,
    *
  FROM
    q
)
SELECT
  *
FROM
  sequenced
WHERE
  sequence_id = 1

要将其更改为 LAST(),请更改 ROW_NUMBER() 函数中的顺序方向。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SQL Server 查询中复制 MS Access“First”功能 的相关文章

随机推荐