2011-05-03 88 views
1

我現在不得不編寫相當複雜的查詢,但我陷入困境。該表結構如下使用嵌套金額的SQL查詢

sql linked query

詢問由稱爲Inquiry_ID字段鏈接到Timelog。我目前的代碼會將總分鐘數迴歸到整個表格而不是每個公司。我基本上是:

公司名稱(dbo.inquiry.concom)和總分鐘的另一列。表INQUIRY認爲同一家公司的100個條目,我想要一行返回公司名稱一次,並從TIMELOG.LOGMINS計算該公司名稱的總分鐘數

因此,例如dbo中有50個條目。詢問具有相同的公司名稱,我希望它顯示一個獨特的公司,但我需要它來總計在另一個表中的分鐘數。我完全失去了!

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 

編輯:類別和產品表的原因是因爲我需要根據產品是否在某個類別中排除計數。

+0

對不起 - 那個標籤錯了。它似乎有人已經爲我重製了,所以謝謝:) – Trinitrotoluene 2011-05-03 13:47:41

回答

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