2013-02-23 2 views
0

J'ai la requête INNER JOIN suivante que vous pouvez voir en action dans un violon here.Ajout d'une colonne supplémentaire à une requête SQL INNER JOIN

SELECT b.*, c.date2 
FROM (
      SELECT a.work, a.amount, 
        COUNT(*) totalCount, 
        SUM(Amount) totalAmount 
      FROM tableName a 
      GROUP BY a.work, a.amount 
     ) b 
     INNER JOIN 
     (
      SELECT a.work, a.amount, DATE_FORMAT(Date,'%D %M %Y') date2, 
        date 
      FROM tableName a 
     ) c ON b.work = c.work and b.amount=c.amount 
ORDER BY b.work, b.totalCount, c.date 

Je voudrais ajouter une autre colonne, appelée « url » à la requête, qui fonctionne de la même manière que la colonne de date, soit elle renvoie la valeur distincte dans la colonne « url » pour chaque ligne . Vous pouvez trouver le schéma qui inclut la nouvelle colonne dans un violon here. Je ne suis pas sûr comment adapter la requête pour renvoyer une colonne supplémentaire avec les valeurs 'url' distinctes. J'ai essayé quelques choses, mais je n'arrive pas à le faire fonctionner correctement.

+0

ce qui est le résultat attendu? – hkutluay

+0

La sortie attendue est la même que dans le premier violon, mais avec une colonne supplémentaire pour les valeurs d'URL distinctes pour chaque ligne. – Nick

Répondre

2

Vous pouvez essayer ...

 
    SELECT b.*, c.date2, c.url 
    FROM (
      SELECT a.work, a.amount, 
        COUNT(*) totalCount, 
        SUM(Amount) totalAmount 
      FROM tableName a 
      GROUP BY a.work, a.amount 
     ) b 
     INNER JOIN 
     (
      SELECT a.work, a.amount, DATE_FORMAT(Date,'%D %M %Y') date2, 
        date, url 
      FROM tableName a 
     ) c ON b.work = c.work and b.amount=c.amount 
    ORDER BY b.work, b.totalCount, c.date 

+0

Merci, ça fonctionne bien. Je suis sûr que j'ai essayé cette solution, mais il semblerait que je ne pouvais pas avoir! – Nick

2

Il peut être écrit en plus court comme

SELECT a.work, a.amount, 
        COUNT(*) totalCount, 
        SUM(Amount) totalAmount, url, DATE_FORMAT(Date,'%D %M %Y') 
      FROM tableName a 
      GROUP BY a.work, a.amount, DATE_FORMAT(Date,'%D %M %Y')