Sql 分组依据,每条记录一行
我的数据与此类似:Sql 分组依据,每条记录一行,sql,sql-server,group-by,Sql,Sql Server,Group By,我的数据与此类似: ID | Order# | Transfer# 1 | Abc | 123a 2 | Abc | 456b 3 | Abc | 123a 4 | Abc | NULL 5 | Def | 123c 6 | Def | 456d 7 | Def | 123c 8 | Def | NULL 我想运行一个返回1行的查询,选择哪一个传输并不重要(null除外) 如果
ID | Order# | Transfer#
1 | Abc | 123a
2 | Abc | 456b
3 | Abc | 123a
4 | Abc | NULL
5 | Def | 123c
6 | Def | 456d
7 | Def | 123c
8 | Def | NULL
我想运行一个返回1行的查询,选择哪一个传输并不重要(null除外)
如果我运行此查询:
SELECT order#,
transfer#
FROM coitem
WHERE order# ='abc'
AND transfer# IS NOT NULL
GROUP BY order# ,
transfer#
它返回:
Order# | Transfer#
Abc | 123a
Abc | 456b
Def | 123c
Def | 456d
是否有一种方法只能返回1行,如下所示:
Order# | Transfer#
Abc | 456b
Def | 123c
我的目标是通过一个查询查看系统中所有订单的前1名转账
谢谢您可以将此功能用于以下目的
select * from (
select [Order], Transfer,
ROW_NUMBER() OVER(PARTITION BY Transfer ORDER BY Transfer) AS rn
from tbl1 ) xxx
where rn = 1 and Transfer is not null;
有几种方式可以表达这一点,但对我来说,最具可读性的方式是:
SELECT
order#,
MAX(transfer#) AS Transfer#
FROM coitem
WHERE transfer# IS NOT NULL
GROUP BY order#
我认为这与您描述的想法相符。一个查询示例(组大小为1)感谢Jamie,我尝试过,不幸的是,有些订单中有字母,max无法正常工作max通常适用于字符串(
varchar
)以及数字。Microsoft SQL server?