Sql 比较所有值为空时的最大值
我有这个表结构和示例数据以及查询。 我期望结果集中有2行。如果该特定代码不存在除NULL以外的任何事务,则应将NULL作为最大值。 在我的例子中,它要么只启用所有3行,max transaction no忽略空值行 预期产出:Sql 比较所有值为空时的最大值,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有这个表结构和示例数据以及查询。 我期望结果集中有2行。如果该特定代码不存在除NULL以外的任何事务,则应将NULL作为最大值。 在我的例子中,它要么只启用所有3行,max transaction no忽略空值行 预期产出: CREATE TABLE NULLTEST(TransactioNo INT, Code VARCHAR(25)); INSERT INTO NULLTEST VALUES (NULL, 'TEST1'); INSERT INTO NULLTEST VALUES (NU
CREATE TABLE NULLTEST(TransactioNo INT, Code VARCHAR(25));
INSERT INTO NULLTEST VALUES (NULL, 'TEST1');
INSERT INTO NULLTEST VALUES (NULL, 'TEST2');
INSERT INTO NULLTEST VALUES (1, 'TEST2');
SELECT * FROM NULLTEST T
WHERE ISNULL(TransactioNo, 1) = (SELECT MAX(ISNULL(TransactioNo, 1)) FROM NULLTEST N)
您的查询如下:
TransactionNo Code
NULL TEST1
1 TEST2
这意味着一切
ISNULLTransactioNo,1始终是1,并且
选择MAXISNULLTransactioNo,NULLTEST中的1也总是1
查看预期输出后编辑:仍然不需要where语句
您可以简单地使用MAX函数和GROUPBY子句
分组依据和最大值后的查询:
结果:
SELECT Code,MAX(TransactioNo) as TransactioNo
FROM NULLTEST
GROUP BY Code
请尝试下面的聚合函数MAX 只需按代码字段分组,然后按TransactioNo字段通过MAX函数获得分组列的最大值:
如果您不满意,可以忽略值为null的ID,您可能会看到以下代码段:
SELECT
MAX( test.TransactioNo) TransactionNo
, test.Code
FROM NULLTEST test
GROUP BY test.Code
添加预期结果@PrashantPimpale补充道
SELECT Code,MAX(TransactioNo) as TransactioNo
FROM NULLTEST
GROUP BY Code
---------------------
Code TransactioNo
---------------------
TEST1 NULL
TEST2 1
---------------------
SELECT Code,MAX(TransactioNo) as TransactioNo
FROM NULLTEST T
GROUP BY Code
SELECT
MAX( test.TransactioNo) TransactionNo
, test.Code
FROM NULLTEST test
GROUP BY test.Code
select max(id) from nullest where id is not null;
-- nullest is the table name..