Select 在DB2中,如何选择不同的列和一个非不同的列?

Select 在DB2中,如何选择不同的列和一个非不同的列?,select,db2,distinct,Select,Db2,Distinct,我需要对少数列执行distinct select,其中一列是非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有两行,因为列D包含不同的值。如何形成一组不同的列(a、b和c),忽略d列,但在select子句中也包含d列

我需要对少数列执行distinct select,其中一列是非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有两行,因为列D包含不同的值。如何形成一组不同的列(a、b和c),忽略d列,但在select子句中也包含d列

仅供参考:我正在使用DB2

谢谢
Sandeep

好吧,你的问题,即使经过改进,仍然相当笼统。所以,你会得到一个大致的答案

如果不了解更多关于表格结构或所需结果的信息,可能无法给出有意义的答案,但下面是:

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
中填充了要检索的单行,并且
table_1
table_2
之间的一对多关系是由于
d
的值不同而创建的,在唯一的
[某些时间戳列]
次处填充。如果是这种情况,它将获得与
表1
匹配的最新
表2
记录。。。您想要
d
的每个值,还是只想要(某个特定的)一个?我们能给你弄张桌子吗?有两种不同的方法可以做到这一点…X-Zero是正确的-如果你有一个以上的d值,你想在结果中显示哪个值?@X-Zero通常我们检查
d
是否为空。我修改了我的查询以反映这一点。同样,如果
d
有多个唯一值,当它不为空时会发生什么?您希望显示所有值还是某些特定值?哦,添加
d不是null
作为连接条件的一部分(尽管优化器可能正在这样做)。@X-Zero对不起,我应该早点解释。通常,我的真实表格中的
d
ACTION\u code
,它可以包含3个值Add、Delete和Change。因此,理想情况下,我需要选择包含
ACTION\u code
的行作为
Add
或具有最新时间戳的
ACTION\u code=Change
(如果有多行包含ACTION code=Change)感谢您的回复,通常我的场景中
d
是一个字符串,因此,我所能检查的可能是
,其中TABLE_2.d不为NULL
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)