Welcome to Sign in | Help
in Search

Select cu toate zilele din luna

Last post 02-28-2012, 8:37 AM by ssandu. 5 replies.
Sort Posts: Previous Next
  •  02-27-2012, 4:09 PM 9138

    Select cu toate zilele din luna

    Salut
    Am 2 tabele : una cu cate o inregistrare pe fiecare zi a lunii si un pret si a doua cu una sau mai multe intregistrari avand un camp data si unul cu un pret.
    Am nevoie sa fac un select pe ambele tabele iar rezilutatul sa fie cate o inregistrare pe fiecare zi cu pretul dar de la data din tabelul al doilea sa fie pretul din tabelul al doilea.
    Nu stiu daca m-am facut inteles.

    Sandu

    Sorin Sandu
  •  02-27-2012, 5:55 PM 9139 in reply to 9138

    Re: Select cu toate zilele din luna

    1. În cea de-a doua tabelă există câte o înregistrare pentru fiecare dată?

    2. În cea de-a doua tabelă există câte un singur preț pentru fiecare dată?


    Dacă răspunsul la 1. este NU, iar la 2. este DA, o soluție ar fi:


    SELECT T1.Data, COALESCE(T2.Pret, T1.Pret) as Pret
    FROM T1 LEFT JOIN T2 ON T1.Data = T2.Data



    Funcția COALESCE: http://msdn.microsoft.com/en-us/library/ms190349.aspx
  •  02-27-2012, 8:35 PM 9140 in reply to 9139

    Re: Select cu toate zilele din luna

    Multumesc
    E un inceput.
    Cea de-a doua tabela are o singura (cel putin teoretic) inregistrare in timp ce in prima am toate zilele lunii.
    Deci din select inregistrarile din duu data mai mica decat data din tabela a doua au pretul din prima tabela iar inregistrarile cu data mai mare sau egala cu data din a doua tabela vor avea pretul din a doua tabela.
    Ex.
    tabel 1
    01.02.2012         5.00
    02.02.2012         5.00
    ...
    ...
    29.02.2012         5.00
    tabel 2
    25.02.2012         9.00

    In cazul in care in tabela a doua mai e o inregistrare cu data mai mare si alt pret, incepand cu aceasta data sa fie noul pret.
    Deci in urma select voi avea
    01.02.2012         5.00
    02.02.2012         5.00
    ...
    ...
    25.02.2012         9.00
    26.02.2012         9.00
    ...
    29.02.2012         9.00
    Daca mai era o inregistrare in tabela 2, de ex. 28.02.2012        12.00, incepand cu 28.02.2012 se schimba pretul in 12.00.
    Probabil cu un CASE voi reusi ceva ?!
    Sau o fi alta solutie ?
    Multumesc anticipat

     

    Sorin Sandu
  •  02-27-2012, 8:36 PM 9141 in reply to 9139

    Re: Select cu toate zilele din luna

    Multumesc
    E un inceput.
    Cea de-a doua tabela are o singura (cel putin teoretic) inregistrare in timp ce in prima am toate zilele lunii.
    Deci din select inregistrarile cu data mai mica decat data din tabela a doua au pretul din prima tabela iar inregistrarile cu data mai mare sau egala cu data din a doua tabela vor avea pretul din a doua tabela.
    Ex.
    tabel 1
    01.02.2012         5.00
    02.02.2012         5.00
    ...
    ...
    29.02.2012         5.00
    tabel 2
    25.02.2012         9.00

    In cazul in care in tabela a doua mai e o inregistrare cu data mai mare si alt pret, incepand cu aceasta data sa fie noul pret.
    Deci in urma select voi avea
    01.02.2012         5.00
    02.02.2012         5.00
    ...
    ...
    25.02.2012         9.00
    26.02.2012         9.00
    ...
    29.02.2012         9.00
    Daca mai era o inregistrare in tabela 2, de ex. 28.02.2012        12.00, incepand cu 28.02.2012 se schimba pretul in 12.00.
    Probabil cu un CASE voi reusi ceva ?!
    Sau o fi alta solutie ?
    Multumesc anticipat

     

    Sorin Sandu
  •  02-27-2012, 9:26 PM 9142 in reply to 9141

    Re: Select cu toate zilele din luna

    OK, am înțeles.
    Atunci, încearcă așa:

    SELECT
    T1.Data
    ,COALESCE((SELECT TOP 1 T2.Pret FROM T2 WHERE T2.Data <= T1.Data ORDER BY T2.Data DESC), T1.Pret) AS Pret
    FROM T1


    Înlocuiește &lt; cu <

    Folosind subquery-ul

    SELECT TOP 1 T2.Pret FROM T2 WHERE T2.Data &lt;= T1.Data ORDER BY T2.Data DESC

    selectezi din tabela T2 prețul valabil începând cu data T1.Data
  •  02-28-2012, 8:37 AM 9143 in reply to 9142

    Re: Select cu toate zilele din luna

    Multumesc
    A mers ptr. inceput
    Ramane sa vad cum fac daca sunt mai multe inregistrari in T2

    Sorin Sandu
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems