我现在不得不写一个非常复杂的查询,但我陷入困境。表结构如下
查询通过名为Inquiry_ID的字段链接到Timelog。我现在的代码可以带来总分钟数,但是对于整个表而不是每个公司。我基本上是在追求:
两列一个用于公司名称(dbo.inquiry.concom),另一列用于总分钟。表格查询保留同一公司的100个条目,我想要一行返回公司名称一次,以及从TIMELOG.LOGMINS计算该公司名称的总分钟数
例如,dbo.inquiry中有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 :(得分: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