v2.5.2
Giriş yap

Sql Sever aynı id'ye sahip satırları birleştirmek?

trsherlock
489 defa görüntülendi

Merhaba yine bir sql sorgusu ile karşınızdayım.
Logo Ticari Porgarmından fatura raporu almak istiyordum.
Kdv oranı ve Tutarı şeklinde alt alta listelenmiş raporu aşağıdaki gibi
kdv oranlarına göre toplatıp sütunlara dağıttım.
Fakat ben tek satırda listelemek istiyorum. Mümkün müdür?

SELECT
    CASE
        WHEN LG_XXX_XX_STLINE.VAT = '8' THEN LG_XXX_XX_STLINE.VAT
    END AS 'ORAN8',
    CASE
        WHEN LG_XXX_XX_STLINE.VAT = '8' THEN SUM(LG_XXX_XX_STLINE.VATAMNT)
    END AS 'HARIC8',
    CASE
        WHEN LG_XXX_XX_STLINE.VAT = '18' THEN LG_XXX_XX_STLINE.VAT
    END AS 'ORAN18',
    CASE
        WHEN LG_XXX_XX_STLINE.VAT = '18' THEN SUM(LG_XXX_XX_STLINE.VATAMNT)
    END AS 'HARIC18'
    FROM LG_XXX_XX_STLINE
WHERE LG_XXX_XX_STLINE.INVOICEREF = '740'
GROUP BY LG_XXX_XX_STLINE.INVOICEREF, LG_XXX_XX_STLINE.VAT
INVOICEREF | ORAN8 | HARIC8 | ORAN18 | HARIC18
-----------| ----- | ------ | ------ | -------
    740    |   8   |    4   |  NULL  |  NULL
    740    |  NULL |  NULL  |   18   |    9

Yorumu yazarken aklıma geldi bu sorguda yapabilir miyim bilmiyorum.
Bu sonucu fatura referans numarasına göre yeniden toplatsam acaba sonuca ulaşabilir miyim?
Deneme yanılma yolu ile yapmaya çalışacağım hakim değilim sql sorgularına yönlendirirseniz sevinirim. Teşekkürler.

Cevap yaz
Cevaplar (1)
trsherlock
1246 gün önce

İşin uzmanı değilim ama sorunu çözebildim.

DECLARE @TABLO TABLE (FATREF INT,CARIREF INT,
HARIC1 FLOAT,KDVT1 FLOAT,
HARIC8 FLOAT,KDVT8 FLOAT,
HARIC18 FLOAT,KDVT18 FLOAT
);
INSERT INTO @TABLO
SELECT
LG_XXX_XX_STLINE.INVOICEREF,
LG_XXX_XX_STLINE.CLIENTREF,
CASE
WHEN LG_XXX_XX_STLINE.VAT = '1' THEN SUM(LG_XXX_XX_STLINE.VATMATRAH)
END,
CASE
WHEN LG_XXX_XX_STLINE.VAT = '1' THEN SUM(LG_XXX_XX_STLINE.VATAMNT)
END,
CASE
WHEN LG_XXX_XX_STLINE.VAT = '8' THEN SUM(LG_XXX_XX_STLINE.VATMATRAH)
END,
CASE
WHEN LG_XXX_XX_STLINE.VAT = '8' THEN SUM(LG_XXX_XX_STLINE.VATAMNT)
END,
CASE
WHEN LG_XXX_XX_STLINE.VAT = '18' THEN SUM(LG_XXX_XX_STLINE.VATMATRAH)
END,
CASE
WHEN LG_XXX_XX_STLINE.VAT = '18' THEN SUM(LG_XXX_XX_STLINE.VATAMNT)
END
FROM LG_XXX_XX_STLINE
GROUP BY LG_XXX_XX_STLINE.INVOICEREF, LG_XXX_XX_STLINE.CLIENTREF, LG_XXX_XX_STLINE.VAT

SELECT
FATREF, CARIREF, LG_XXX_CLCARD.DEFINITION_, LG_XXX_CLCARD.TAXNR, LG_XXX_CLCARD.TCKNO,
LG_XXX_XX_INVOICE.FICHENO,LG_XXX_XX_INVOICE.DATE_,
SUM(HARIC1) AS'HARIC1',
SUM(KDVT1) AS'KDVT1',
SUM(HARIC8) AS'HARIC8',
SUM(KDVT8) AS'KDVT8',
SUM(HARIC18) AS'HARIC18',
SUM(KDVT18) AS'KDVT18',
LG_XXX_XX_INVOICE.NETTOTAL

FROM
((@TABLO
INNER JOIN LG_XXX_CLCARD ON CARIREF = LG_XXX_CLCARD.LOGICALREF)
INNER JOIN LG_XXX_XX_INVOICE ON FATREF = LG_XXX_XX_INVOICE.LOGICALREF)
GROUP BY FATREF, CARIREF, LG_XXX_CLCARD.DEFINITION_,LG_XXX_CLCARD.TAXNR,LG_XXX_CLCARD.TCKNO,LG_XXX_XX_INVOICE.FICHENO,LG_XXX_XX_INVOICE.DATE_,
LG_XXX_XX_INVOICE.NETTOTAL;;

Not: Ne hikmetse burada paylaştıktan bir süre sonra sorunu çözüyorum :)