Sql 我正在寻找一种方法来获取不同的特定列,选择所有列

Sql 我正在寻找一种方法来获取不同的特定列,选择所有列,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我想去拿 数据中的所有列 通过不同的方式选择。 从ID到z有许多列 下表是示例。而实际的表格有很多数据 ID.name.date,a,b,c,d,e….z ---------------- 1 AA 15/09/20,…(omit). 1 AA 15/09/18,… 1 AA 15/09/17,… 1 AB 15/09/10,… 2 BB 15/09/20,… 2 BB 15/09/19,… 我试着遵循sql Select * from X_TABLE a INNER JOIN ( Sel

我想去拿 数据中的所有列 通过不同的方式选择。 从ID到z有许多列

下表是示例。而实际的表格有很多数据

ID.name.date,a,b,c,d,e….z
----------------
1 AA 15/09/20,…(omit).
1 AA 15/09/18,…
1 AA 15/09/17,…
1 AB 15/09/10,…
2 BB 15/09/20,…
2 BB 15/09/19,…

我试着遵循sql


Select * from X_TABLE a INNER JOIN (
Select distinct  id from X_TABLE ) b on a.ID = b.ID
但我发现我尝试的结果有多余的id行

select distinct id, * from X_TABLE

无法执行。

从我可以看到,由于某些原因,您的ID字段中存在重复项。但你的约会起了作用

因此,当您查询
时,从x_表中选择distinct id

ID
---
1
2
ID  Name
---------
1   AA
2   BB
当您查询
时,从x_表中选择不同的id、名称

ID
---
1
2
ID  Name
---------
1   AA
2   BB
但当您添加日期时,它确实与您的id字段“从x_表中选择不同的id、名称、日期”一起标识您的数据集

   ID Name Date
   ------------
   1  AA   2020-09-30
   1  AA   2020-10-01
   2  BB   2020-09-30
   2  BB   2020-10-01
对于您要求的最小粒度,这是不同的。如果只想显示具有最新时间戳的数据集,则应对此进行筛选。或者添加一个新列“current”,并将其用作标志或,或,或。。。根据你真正需要做的事情,有很多可能性

下面是一个过滤器查询,其中包含一个过滤器,可满足您的要求:

select distinct id, name, date
  from x_table
 where date = to_date('2020-10-01','yyyy-mm-dd')
添加连接条件以执行您希望它执行的操作


尽管如此,从您提供的数据来看,不再需要distinct运算符。

您想要这样的吗

select t.*
from X_TABLE t
where t.date = (select max(t2.date) from t t2 where t2.id = t.id);

谢谢你回答我的问题。对不起,我的英语很难理解。实际上X表有很多列。我正在寻找一种不在select SQL中写入所有列名的方法。您应该弄清楚您的业务密钥是什么。从我看到的是你的id+日期。您的业务密钥可能有更多相关列。然后可以查询唯一的行。那么你甚至不需要一个独立的操作符<代码>从x_表中选择*,其中日期=截止日期('2020-10-01','yyyy-mm-dd')
[与我的示例相关的日期]。日期=截止日期('2020-10-01','yyyy-mm-dd')未获取数据。RA-00942表或视图不存在。七