我需要在几列上执行不同的选择,其中一列是不同的。我可以在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
答案 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_1
和table_2
之间的一对多关系填充在唯一的d
次。如果是这种情况,则会获得与[some_timestamp_column]
匹配的最新table_2
条记录。