Welcome to Sign in | Help

Ajutor optimizare interogare

  •  02-01-2008, 1:24 AM

    Ajutor optimizare interogare

    Se dau 3 tabele:

    [FACTURI](
    [ID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
    [NUMAR] [numeric](18, 0) NULL,
    [DATA] [datetime] NULL)

    [DETAIL](
    [ID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
    [ID_FACTURA] [numeric](18, 0) NULL,
    [ID_PRODUS] [numeric](18, 0) NULL)

    [PRODUSE](
    [ID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
    [PRODUS] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL)

    DETAIL.ID_FACTURA = FACTURI.ID
    DETAIL.ID_PRODUS = PRODUSE.ID

    In tabela FACTURI se gasesc antetele facturii (numar factura si data emitere), in DETAIL sint produsele vindute sub forma de coduri care se regasesc in tabela PRODUSE. In tabela produse se gasesc un numar mare (mii de produse). Ce as vrea sa fac intr-un mod cit mai elegant: un tabel care sa aiba ca si capete de coloana:
    1. Cod produs
    2. Ziua 1 a lunii
    3. Ziua 2 a lunii
    -------------------
    32. Ziua 31 a lunii
    33. Total per produs

    Ca si linii in tabel vor fi:
    Coloana 1:
    produsele in ordine alfabetica
    Coloana 2: numarul de aparitii [count(PRODUS1)] din ziua 1 a lunii
    Coloana 3: numarul de aparitii [count(PRODUS1)] din ziua 2 a lunii
    etc
    Coloana 33: suma aparitiilor pt cele 31 zile pt produsul PRODUS1

    Numarul de coloane trebuie determinat automat (nu toate lunile au 31 de zile!), chiar daca tabela care va contine rezultatul va avea un nr fix de coloane, zilele lipsa din luna vor contine 0 sau null.
    Se poate face chestia asta fara a face select count(P1), count(P2), etc de 31 de ori? As dori ceva cit de cit rapid, iar pe mine ma cam depaseste!

    Multumesc anticipat!

View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems