gpt4 book ai didi

sql-server - 在 SQL Server 查询中复制 MS Access "First"函数

转载 作者:行者123 更新时间:2023-12-02 19:25:39 24 4
gpt4 key购买 nike

我对 SQL Server 还很陌生,所以现在很抱歉。

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

查询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;

SOURCE DATA and query results I am looking for

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

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

表1

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() 函数中的顺序方向。

关于sql-server - 在 SQL Server 查询中复制 MS Access "First"函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12916994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com