2011-05-03 6 views
1

Je dois écrire une requête assez compliquée pour l'instant mais je suis coincé. La structure de la table est la suivanteRequête SQL avec somme imbriquée

sql linked query

L'enquête est liée à TimeLog par un champ appelé Inquiry_ID. Mon code actuel qui ramène le total des minutes mais pour toute la table et non par compagnie. Ce que je suis fondamentalement après:

Deux Colonnes un pour le nom de la société (dbo.inquiry.concom) et un autre pour le total des minutes. La table INQUIRY contient 100 entrées pour la même société, je veux une ligne pour retourner le nom de l'entreprise une fois et le nombre total de minutes comptées pour le nom de cette société de TIMELOG.LOGMINS

Donc par exemple il y a 50 entrées dans dbo .chiry qui ont le même nom de compagnie, je veux qu'il montre une compagnie distincte mais j'en ai besoin pour totaliser la quantité de minutes qui est dans une autre table. Je suis complètement perdu!

DECLARE @StartDate DATETIME, @EndDate DATETIME 
SET    @StartDate = dateadd(mm, - 1, getdate()) 
SET    @StartDate = dateadd(dd, datepart(dd, getdate()) * - 1, @StartDate) 
SET    @EndDate = dateadd(mm, 1, @StartDate) 
SELECT DISTINCT TOP 100 PERCENT dbo.INQUIRY.CONCOM, TIMELOG_1.LOGMINS, dbo.INQUIRY.ESCDATE, dbo.INQUIRY.INQUIRY_ID, 
                (SELECT  SUM(LOGMINS) AS Expr1 
                FROM   dbo.TIMELOG 
                WHERE  dbo.INQUIRY.ESCDATE BETWEEN @Startdate AND @EndDate) AS TOTALMINUTES 
         FROM   dbo.INQUIRY INNER JOIN 
               dbo.TIMELOG AS TIMELOG_1 ON dbo.INQUIRY.INQUIRY_ID = TIMELOG_1.INQUIRY_ID INNER JOIN 
               dbo.PROD ON dbo.INQUIRY.PROD_ID = dbo.PROD.PROD_ID INNER JOIN 
               dbo.CATEGORY ON dbo.PROD.CATEGORY_ID = dbo.CATEGORY.CATEGORY_ID 
         WHERE  dbo.INQUIRY.ESCDATE BETWEEN @Startdate AND @EndDate 
         ORDER BY dbo.INQUIRY.CONCOM 

EDIT: La raison pour laquelle les tables de la catégorie et de produits sont là parce que je vais devoir exclure le compte en fonction de savoir si un produit est dans une certaine catégorie.

+0

Désolé - c'est étiqueté incorrect. Il semble que quelqu'un l'a retagged pour moi alors merci :) – Trinitrotoluene

Répondre

3
SELECT i.concom, COALESCE(SUM(t.logmins), 0) 
FROM inquiry i 
LEFT JOIN 
     timelog t 
ON  t.inquiry_id = i.inquiry_id 
GROUP BY 
     i.concom