Подзапрос SQL Server с минимальными и максимальными значениями - PullRequest
0 голосов
/ 17 сентября 2018

Мне трудно понять и использовать вложенный подзапрос в T-SQL (SQL Server 2012):

  • Имя клиента
  • Номер клиента
  • Дата первой продажи
  • Дата последней продажи

Я могу создать таблицу, показывающую EITHER Min (sale_date) или Max (Sale_date), используя приведенный ниже запрос, но не оба.

select 
    cm_number, cm_name, dim_invoice_date
from 
    fact_invoice_history
where 
    fact_invoice_history.dim_invoice_date = (select MAX(fact_invoice_history.dim_invoice_date) 
                                             from fact_invoice_history) 

Пожалуйста, помогите. Я знаю, что это вопрос новичка.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

нижеприведенное решение работает нормально.

    select 
    cm_number,
    cm_name,
    min(dim_invoice_date) min_sale_date,
    max(dim_invoice_date) max_sale_date
from 
    #fact_invoice_history
group by
    cm_number,
    cm_name

Я, вероятно, задал здесь не тот вопрос, но спасибо за помощь

0 голосов
/ 17 сентября 2018
select * into #fact_invoice_history from
    (select 1 as cm_number, 'one' as cm_name, '2018-09-01 10:15:00' as dim_invoice_date
    union all select 1, 'one', '2018-09-02 10:15:00'
    union all select 1, 'one', '2018-09-03 10:15:00'
    union all select 2, 'two', '2018-09-06 10:15:00'
    union all select 2, 'two', '2018-09-07 10:15:00'
    union all select 3, 'three', '2018-09-08 10:15:00') data

select * from #fact_invoice_history
-- ----------------------------------------
--  cm_number   cm_name dim_invoice_date
--  ----------- ------- -------------------
--  1           one     2018-09-01 10:15:00
--  1           one     2018-09-02 10:15:00
--  1           one     2018-09-03 10:15:00
--  2           two     2018-09-06 10:15:00
--  2           two     2018-09-07 10:15:00
--  3           three   2018-09-08 10:15:00
-- ----------------------------------------

select 
    cm_number,
    cm_name,
    min(dim_invoice_date) min_sale_date,
    max(dim_invoice_date) max_sale_date
from 
    #fact_invoice_history
group by
    cm_number,
    cm_name
-- ------------------------------------------------------------
--  cm_number   cm_name min_sale_date       max_sale_date
--  ----------- ------- ------------------- -------------------
--  1           one     2018-09-01 10:15:00 2018-09-03 10:15:00
--  3           three   2018-09-08 10:15:00 2018-09-08 10:15:00
--  2           two     2018-09-06 10:15:00 2018-09-07 10:15:00
-- ------------------------------------------------------------

drop table #fact_invoice_history
...