Sql获取除一列之外所有列都匹配的不同行
嗨,我有代码,它给我的输出如下。它在两个不同的日期检查数据,即kry函数,它是一个varchar字段 使用where键输入('Abc26','Abc27')Sql获取除一列之外所有列都匹配的不同行,sql,Sql,嗨,我有代码,它给我的输出如下。它在两个不同的日期检查数据,即kry函数,它是一个varchar字段 使用where键输入('Abc26','Abc27') 键代码col1 col2 col3 Abc27 esp 4 54 73 Abc26 esp 3 54 32 Abc27澳元233277 Abc27港币37 2 3 我需要输出为仅1行,但前提是数据应同时出现在两天内,即Abc27和Abc26,但仅显示最新的一行,即Abc27行 所需输出 键代码col1 col2 col3 Abc27 es
键代码col1 col2 col3
Abc27 esp 4 54 73
Abc26 esp 3 54 32
Abc27澳元233277
Abc27港币37 2 3
我需要输出为仅1行,但前提是数据应同时出现在两天内,即Abc27和Abc26,但仅显示最新的一行,即Abc27行
所需输出
键代码col1 col2 col3
Abc27 esp 4 54 73
您可以对相关子查询使用EXISTS
:
SELECT t.*
FROM table t
WHERE EXISTS (SELECT 1 FROM table t1 WHERE t1.code = t.code AND t1.key <> t.key) AND
t.key = (SELECT MAX(t1.key) FROM table t1 WHERE t1.code = t.code);
但是你给我们看的匹配记录有一个对应的两列,而不是一列,它们不一致。你能修复你的数据吗?两天?我看不到日期/天数。你怎么知道最近一行是什么?如果有好几天,但有差距呢?另外,提供一个数据库标记。
SELECT t.*
FROM (SELECT t.*, COUNT(*) OVER (PARTITION BY code) AS Code_cnt,
ROW_NUMBER() OVER (PARTITION BY code ORDER BY key DESC) AS seq
FROM table t
) t
WHERE Code_cnt > 1 AND seq = 1;