2017-10-18 1 views
1

Mon objectif est d'obtenir le rapport de solde client, mais je suis coincé dans ma requête où je peux obtenir le type de doc d'une certaine colonne. J'ai ma requêteRetour SQL 1 ou des valeurs distinctes à partir de plusieurs colonnes

SELECT 
ROW_NUMBER() OVER(ORDER BY DR.id) AS 'NO.' ,   
CONVERT(VARCHAR(13), CAST(DR.doc_date AS DATE), 100) AS 'DOC DATE', 
SR.net_total, 
SR.dell_col_charge, 
SR.CDW, 
sp.amount 
FROM 
[dbo].[doc_customer]    DC 
LEFT JOIN [dbo].[doc_rent]   DR ON DR.doc_sourced_customer_id = DC.id 
LEFT JOIN [dbo].[slip_rent]   SR ON SR.doc_sourced_doc_rent_id = DR.id 
LEFT JOIN [dbo].[slip_rent_payment] SP ON SP.doc_sourced_rent_id  = DR.id 

comme u peut voir dans ma requête, il retourne le total, la charge nette, CDW, et le montant , mais mon objectif est de leur montrer dans la colonne 1 dans une des lignes différentes. Vous pouvez voir sur l'image que j'ai jointe c'est mon objectif de ma requête.

enter image description here

quelqu'un a l'idée? Merci.

Répondre

1

J'aime utiliser apply pour unpivoting:

SELECT ROW_NUMBER() OVER(ORDER BY DR.id) AS [NO.] ,   
     CONVERT(VARCHAR(13), CAST(DR.doc_date AS DATE), 100) AS [DOC DATE], 
     v.* 
FROM [dbo].[doc_customer] DC LEFT JOIN 
    [dbo].[doc_rent] DR 
    ON DR.doc_sourced_customer_id = DC.id LEFT JOIN 
    [dbo].[slip_rent] SR 
    ON SR.doc_sourced_doc_rent_id = DR.id LEFT JOIN 
    [dbo].[slip_rent_payment] SP 
    ON SP.doc_sourced_rent_id = DR.id OUTER APPLY 
    (VALUES ('net_total', SR.net_total), 
      ('dell_col_charge', SR.dell_col_charge), 
      ('CDW', SR.CDW), 
      ('amount', sp.amount) 
    ) v(which, val); 
+0

Merci! J'ai maintenant l'idée. Mais puis-je demander quelque chose pourquoi il retourne chaîne comme ceci "----" ci-dessous du nom des colonnes? Je ne suis pas familier avec ça. – FritsJ

+2

C'est ainsi que fonctionne l'application que vous utilisez pour l'interrogation. SQL Server Management Studio le fait lorsque vous placez les résultats en mode texte plutôt que dans une grille. –