簡體   English   中英

如何從 SQL 中的 2 個表中獲取最小值和最大值

[英]How to get min and max from 2 tables in SQL

我正在嘗試從最小 ID (ID=1) 獲取start date ,從最大 ID (ID=3) 獲取end date ,但我不確定如何檢索。 以下是我的數據 -

在此處輸入圖像描述

表 1 和表 2 是源表。 我試圖讓 output 像第三張桌子一樣。

我的要求是從 ID 的第一條記錄獲取開始日期,從 ID 的最后一條記錄獲取結束日期,我們可以借助 ID 字段識別第一條記錄和最后一條記錄。 如果 ID 為 min 表示第一條記錄,ID 為 max 則表示最后一條記錄

請幫我!

這是一種選擇; 假設您使用 Oracle(關於您使用 Oracle SQL Developer), x內聯視圖選擇

  • start_date屬於該nameID列值最低的name (即first_value 按名稱順序按 id 分區
  • end_date屬於具有該name的最高ID列值的name (即first_value 按名稱順序按 id DESC 分區

SQL> with
  2  -- sample data
  3  t1 (pid, name) as
  4    (select 123, 'xyz' from dual union all
  5     select 234, 'pqr' from dual
  6    ),
  7  t2 (id, name, start_date, end_date) as
  8    (select 1, 'xyz', date '2020-01-01', date '2020-07-20' from dual union all
  9     select 2, 'xyz', date '2020-02-01', date '2020-05-30' from dual union all
 10     select 3, 'xyz', date '2020-06-30', date '2020-07-30' from dual union all
 11     --
 12     select 1, 'pqr', date '2020-04-30', date '2020-09-30' from dual union all
 13     select 2, 'pqr', date '2020-05-30', date '2020-09-30' from dual union all
 14     select 3, 'pqr', date '2020-06-30', date '2020-07-01' from dual
 15    )
 16  select a.pid,
 17         x.name,
 18         max(x.start_date) start_date,
 19         max(x.end_date)   end_date
 20  from t1 a join
 21      (
 22        -- start_date: always for the lowest  T2.ID value row
 23        -- end_date  : always for the highest T2.ID value row
 24        select b.name,
 25               first_value(b.start_date) over (partition by b.name order by b.id     ) start_date,
 26               first_value(b.end_date)   over (partition by b.name order by b.id desc) end_date
 27        from t2 b
 28       ) x
 29       on a.name = x.name
 30  group by a.pid,
 31           x.name
 32  order by a.pid;

       PID NAME START_DATE END_DATE
---------- ---- ---------- ----------
       123 xyz  01/01/2020 07/30/2020
       234 pqr  04/30/2020 07/01/2020

SQL>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM