Welcome to Sign in | Help

Nu ma descurc cu o interogare....

  •  09-27-2008, 5:49 PM

    Nu ma descurc cu o interogare....

    Salut, ma 'lupt' cu o interogare si nu reusesc sa-i dau de cap...daca ma poate ajuta cineva cu o idee ar fi excelent! Deci...am un tabel NOTE si unul PARTENERI. Pornind de la tabelele de mai jos, as dori sa obtin un rezultat de forma:

    CREATE TABLE [dbo].[NOTE](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [DATADOC] [datetime] NULL,
    [TIPDOC] [nvarchar](50) NULL,
    [NRDOC] [nvarchar](50) NULL,
    [EXP] [nvarchar](50) NULL,
    [CONTDB] [nvarchar](50) NULL,
    [CONTCR] [nvarchar](50) NULL,
    [LEI] [money] NULL) ON [PRIMARY]

    CREATE TABLE [dbo].[PARTENERI](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [NUME] [nvarchar](250) NULL,
    [CF] [nvarchar](50) NULL,
    CONSTRAINT [PK__PARTENERI__08EA5793] PRIMARY KEY CLUSTERED
    (
    [ID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
    CONSTRAINT [UQ__PARTENERI__09DE7BCC] UNIQUE NONCLUSTERED
    (
    [NUME] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    CREATE TABLE [dbo].[SCHEME_RG](
    [ID] [decimal](18, 0) IDENTITY(1,1) NOT NULL,
    [OPERATIE] [decimal](18, 0) NULL,
    [COL] [decimal](18, 0) NULL,
    [CONTDB] [nvarchar](50) NULL,
    [CONTCR] [nvarchar](50) NULL
    )
    ON [PRIMARY]

    INSERT INTO [NOTE] ([DATADOC],[TIPDOC],[NRDOC],[EXP],[CONTDB],[CONTCR],[LEI]) VALUES ('20080901','FAC','1111','MARFA','371.1','378.1',111.01)
     INSERT INTO [NOTE] ([DATADOC],[TIPDOC],[NRDOC],[EXP],[CONTDB],[CONTCR],[LEI]) VALUES ('20080901','FAC','1111','MARFA','371.1','401.MAMAMIA',657.9)
    INSERT INTO [NOTE] ([DATADOC],[TIPDOC],[NRDOC],[EXP],[CONTDB],[CONTCR],[LEI]) VALUES ('20080901','FAC','1111','MARFA','371.1','4428',146.09)

    INSERT INTO [NOTE] ([DATADOC],[TIPDOC],[NRDOC],[EXP],[CONTDB],[CONTCR],[LEI]) VALUES ('20080901','FAC','2222','MARFA','371.1','378.1',17.24)
     INSERT INTO [NOTE] ([DATADOC],[TIPDOC],[NRDOC],[EXP],[CONTDB],[CONTCR],[LEI]) VALUES ('20080901','FAC','2222','MARFA','371.1','401.COCACOLA',92)
    INSERT INTO [NOTE] ([DATADOC],[TIPDOC],[NRDOC],[EXP],[CONTDB],[CONTCR],[LEI]) VALUES ('20080901','FAC','2222','MARFA','371.1','4428',20.76)
    INSERT INTO [NOTE] ([DATADOC],[TIPDOC],[NRDOC],[EXP],[CONTDB],[CONTCR],[LEI]) VALUES ('20080901','FAC','3333','VANZARE','4111.PEPSICOLA','707',119.5)
    INSERT INTO [NOTE] ([DATADOC],[TIPDOC],[NRDOC],[EXP],[CONTDB],[CONTCR],[LEI]) VALUES ('20080901','FAC','3333','VANZARE','4111.PEPSICOLA','4427',22.7)

    INSERT INTO [PARTENERI] ([NUME],[CF]) VALUES ('MAMAMIA','1234')
    INSERT INTO [PARTENERI] ([NUME],[CF]) VALUES ('COCACOLA','4522')
    INSERT INTO [PARTENERI] ([NUME],[CF]) VALUES ('PEPSICOLA','413111')

    INSERT INTO [SCHEME_RG] ([OPERATIE],[COL],[CONTDB],[CONTCR]) VALUES (0,1,'371.%','401.%')
    INSERT INTO [SCHEME_RG] ([OPERATIE],[COL],[CONTDB],[CONTCR]) VALUES (0,1,'371.%','4428')
    INSERT INTO [SCHEME_RG] ([OPERATIE],[COL],[CONTDB],[CONTCR]) VALUES (0,1,'371.%','378.%')
    INSERT INTO [SCHEME_RG] ([OPERATIE],[COL],[CONTDB],[CONTCR]) VALUES (1,1,'4111.%','707')
    INSERT INTO [SCHEME_RG] ([OPERATIE],[COL],[CONTDB],[CONTCR]) VALUES (1,1,'4111.%','4427')
    INSERT INTO [SCHEME_RG] ([OPERATIE],[COL],[CONTDB],[CONTCR]) VALUES (0,2,'381.%','401.%')
    INSERT INTO [SCHEME_RG] ([OPERATIE],[COL],[CONTDB],[CONTCR]) VALUES (1,2,'381.%','401.%')

    REZULTAT
    -------------------------------------------------------------
    DATADOC, NRDOC, NUME_PARTENER, OPERATIE, COL1, COL2
    -------------------------------------------------------------
    01/09/2008, 1111, MAMAMIA, 0, 915.00, 0.00
    01/09/2008, 2222, COCACOLA, 0, 130,00, 0.00
    01/09/2008, 3333, PEPSICOLA, 1, 142.2, 0.00

    Ce am incercat eu nu e bine...imi baga de mai multe ori (3 ori) liniile care apartin unei facturi din cauza ca nu stiu cum sa fac o conexiune intre tabela PARTENERI.NUME si contul analitic al 401.XXXX (care apare din pacate doar la unu din cele 3 rinduri corespunzatoare unui document).
    Pls help ca nu mai stiu ce sa fac! Daca credeti ca e important, o sa postez interogarea asa cum am gindit-o eu (daca nu ar trebui sa afisez coloana PARTENER ar fi functionala).

    Multumesc anticipat!

    Revin cu codul:

    SELECT DATADOC AS 'Data', NRDOC AS 'Numar',
    SUM(CASE WHEN OPERATIE = 0 AND COL = 1 THEN VALOARE ELSE 0 END) AS 'A',
    SUM(CASE WHEN OPERATIE = 1 AND COL = 1 THEN VALOARE ELSE 0 END) AS 'B',
    SUM(CASE WHEN OPERATIE = 0 AND COL = 2 THEN VALOARE ELSE 0 END) AS 'C',
    SUM(CASE WHEN OPERATIE = 1 AND COL = 2 THEN VALOARE ELSE 0 END) AS 'D'
    FROM (SELECT N.DATADOC, N.NRDOC, S.OPERATIE, S.COL, SUM(N.LEI) AS VALOARE
    FROM dbo.NOTE AS N INNER JOIN dbo.SCHEME_RG AS S ON N.CONTDB LIKE S.CONTDB AND N.CONTCR LIKE S.CONTCR
    WHERE (N.DATADOC BETWEEN '20080901' AND '20080901')
    GROUP BY N.DATADOC, N.NRDOC, S.OPERATIE, S.COL) AS X
    GROUP BY DATADOC, NRDOC, OPERATIE, COL
    ORDER BY 'Data', 'Numar','A' desc

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