【发布时间】:2013-06-22 02:37:59
【问题描述】:
我有一个包含 14 列的表。这些列是颜色、类型、英尺、日期、计数等。我需要的是选择所有不同的 id 记录和最近日期的类型。所以,例如...
颜色------类型-----------日期
红色--------工作-----------01/01/01
红色---------播放----------02/02/02
红色---------播放----------03/03/03
在这种情况下,我想返回红色,工作,01/01/01 和红色,播放 03/03/03。希望这是有道理的。我尝试了 select unique 和 select distinct 和 group bys 的不同组合,但我无法提出任何建议。
这是我正在尝试的 SQL 语句:
select distinct
chock_id,
roll_type,
max(chock_service_dt),
chock_id_dt,
chock_seq_num,
chock_service_cmnt,
total_rolled_lineal_ft,
total_rolled_tons,
chock_usage_cnt,
chock_insert_dt,
record_modify_dt,
next_chock_service_dt_act,
previous_alarm_value,
upload_complete_yn
from
tp07_chock_summary_row
group by
chock_id,
roll_type,
chock_service_dt,
chock_id_dt,
chock_seq_num,
chock_service_cmnt,
total_rolled_lineal_ft,
total_rolled_tons,
chock_usage_cnt,
chock_insert_dt,
record_modify_dt,
next_chock_service_dt_act,
previous_alarm_value,
upload_complete_yn;
这是一个屏幕截图。就像我在下面的评论中所说的那样,就像在第 2 行和第 4 行中一样,我不能有多个具有相同 chock_id 和 roll_type 的记录。
【问题讨论】:
-
那么,对于
chock_id和roll_type的特定组合,在所有chock_seq_num(和其他列)中,您想要哪一个? -
我不完全确定我是否理解这个问题。我在OP中发布了截图。看看第 2 行和第 4 行都是蓝色/工作的吗?我不能拥有那个。我只能有一个绿色/工作,蓝色/工作等。
-
因此对于“绿色”和“工作”的组合,您在
chock_seq_num列中有几个不同的值(我也可能在其他列中假设)。由于您希望输出中只有一行带有“green”和“work”,您希望看到chock_seq_num的许多可能值中的哪一个? -
我只想要最近 chock_service_dt 的记录。基本上,它是一个在 chock_service_dt 上被替换的硬件,因此所有旧数据都是不必要的。我只想要 chock_id 和 roll_type 的每个组合的最近日期。
-
所以,应该只有 9 行。应该有黑色/工作,蓝色工作,蓝色工作,绿色工作,绿色工作,灰色工作,红色工作,白色工作和黄色工作。但我需要日期最近的那个,以及它们各自列中的所有其他数据。所以,我希望有 9 条记录,每条记录有 14 列数据。它应该是最新的 chock_service_dt
标签: oracle