2012-08-31 70 views
0

我有一个SQL 2005中的表,我想汇总数据,这里是一个例子。如何将聚合SQL查询和普通查询结合起来?

JobName  ProductionCounter  StartDate    EndDate    CounterName  Stage 
---------------------------------------------------------------------------------------------------------- 

200   23      2012-08-30 13:45:00       Kilograms   Final 
200   2      2012-08-30 13:45:00       Bars    Final 
    [...] 
200   46      2012-08-30 13:45:00 2012-08-30 17:23:00 Kilograms   Final 
200   4      2012-08-30 13:45:00 2012-08-30 17:23:00 Bars    Final 
300   20      2012-08-30 13:45:00       Kilograms   1st 
300   10      2012-08-30 18:12:00       Bars    1st 
    [...] 
300   40      2012-08-30 18:12:00 2012-08-30 19:17:00 Kilograms   1st 
300   20      2012-08-30 18:12:00 2012-08-30 19:17:00 Bars    1st 

I want to format this into the following 


JobName  TotalKilos  TotalBars  StartDate    EndDate    Stage 
----------------------------------------------------------------------------------------------- 

200   69    6    2012-08-30 13:45:00 2012-08-30 17:23:00 Final 
300   60    30    2012-08-30 18:12:00 2012-08-30 19:17:00 1st 

这让我意识到我对SQL一无所知。我曾尝试以下作为一个开始

SELECT JobName, SUM(KiloCounter) 
FROM vwOeeInterval 
GROUP BY JobName 

SELECT JobName, SUM(BarCounter) 
FROM vwOeeInterval 
GROUP BY JobName 

我的问题是:

  1. 如何合并到一条查询?

  2. 我该如何查询诸如StartDate和Stage这样的列?特别是在作业完成之前没有填写结束日期 ?

任何指针将不胜感激。

回答

0

这是一个简单的聚合查询。你只需要添加所需的字段:

SELECT JobName, SUM(KiloCounter) as TotalKilos, 
     sum(BarCounts) as TotalBars, 
     min(StartDate) as StartDate, 
     max(EndDate) as EndDate, 
     max(Stage) as Stage 
FROM vwOeeInterval 
GROUP BY JobName 

我假设你知道,开始日期,结束日期,和舞台都具有相同的工作的所有行相同或NULL。聚合将忽略NULL值。

+0

谢谢你们。我用max()和min()取得了进展,但我意识到我没有正确解释自己。我想查询生产计数器在哪里柜台名称是“Kilos”,并有这个'AS'列'KiloCounter'。 我也想查询其中CounterName是“酒吧”,但我搞清楚了这将需要两个独立的SELECT莫名其妙地加入? – Tim

+0

@TimRees。 。 。在这种情况下要做的最好的事情是提出另一个问题,就像你一样提供数据前后的数据。如果你只是修改你的问题,人们会阅读它,看到已发布的答案,并想知道为什么这些答案是如此离群。 –

+0

谢谢,我创建了一个新问题。 – Tim

0

当您尝试基础上,作业名第一,然后countername,你应该分组基于这些2列得到的总和。

不要忘记

样本选择两列,你是分组会是这个样子 -
Select column1, column2, sum(column3) from tablename
where blah blah blah...
group by column1, column2