如何在DB2中选择distinct-columns和一个nondistinct-column?

时间:2011-08-01 14:46:11

标签: select db2 distinct

我需要在几列上执行不同的选择,其中一列是不同的。我可以在SQL语句中指定哪些列构成不同的组。

目前我正在这样做。

Select distinct a,b,c,d from TABLE_1 inner join TABLE_2 on TABLE_1.a = TABLE_2.a where TABLE_2.d IS NOT NULL;

我遇到的问题是我为上面的SQL获取了2行,因为列D 包含不同的值。如何形成一组不同的列(a,b& c)忽略列d,但在select子句中也有列d?

仅供参考:我正在使用DB2

由于 和Sandeep

2 个答案:

答案 0 :(得分:1)

SELECT a,b,c,MAX(d) 
FROM table_1 
INNER JOIN table_2 ON table_1.a = table_2.a 
GROUP BY a,b,c

答案 1 :(得分:0)

嗯,你的问题,即使是改进,仍然很普遍。所以,你会得到一般答案。

如果不了解您的表结构或您想要的结果,可能无法给出有意义的答案,但这里有:

SELECT a, b, c, d
FROM table_1 as t1
JOIN table_2 as t2
ON t2.a = t1.a
AND t2.[some_timestamp_column] = (SELECT MAX(t3.[some_timestamp_column])
                                  FROM table_2 as t3
                                  WHERE t3.a = t2.a)

这假设table_1填充了要检索的单行,并且由于{{1}的值不同,创建了table_1table_2之间的一对多关系填充在唯一的d次。如果是这种情况,则会获得与[some_timestamp_column]匹配的最新table_2条记录。