SQL嵌套选择......我想?

时间:2010-11-05 18:32:23

标签: sql sql-server

我有2个表UnitProd和Unit。

Unit = unitproductivityid,unitid, unitnumber, fleet
UnitProd = unitproductivityid, day, shipweight, stops

我在每个表中都有多个单元,我正在尝试按功能分组以获取不同内容的计数。(表中包含的字段多于指定的字段,这只是示例目的。)

所以基本上我有以下内容:

SELECT
u.[Fleet]
,u.[Unit]
,up.[Day]
,((SUM(up.[Shipment_Weight]))/2000) AS [ShipmentWeight]
,((SUM(up.[Shipment_Weight]))/COUNT(up.[Stops])) AS [ShpmntAvg]
FROM
[dbo].[UnitProductivity] u
INNER JOIN [dbo].[UnitProductivityDetails] up
ON u.UnitProductivityId = up.UnitProductivityId
GROUP BY u.fleet, u.unit

所以基本上我遇到的问题是一些up。[Stops]字段中有一个0,所以我想排除这些。所以基本上一个单位有1-30天无论如何,有些日子有0作为[停止]所以我想数(只有一天停止)。我会在这里使用嵌套选择以及如何使用?

由于

4 个答案:

答案 0 :(得分:4)

除非我误解了这个问题,否则你不需要嵌套的SELECT。

只需在GROUP BY之前添加以下内容:

WHERE up.[Stops] > 0

答案 1 :(得分:0)

它不必嵌套,但这是一个简单的方法:

SELECT * FROM Unit WHERE unitproductivityid IN (SELECT unitproductivityid FROM UnitProd WHERE stops > 0) as UP
祝你好运!

答案 2 :(得分:-1)

在GROUP BY行之后,添加HAVING count(up。[Stops])> 0

答案 3 :(得分:-1)

使用现有代码,您可以执行HAVING子句:

SELECT u.[Fleet] ,u.[Unit] ,up.[Day] ,((SUM(up.[Shipment_Weight]))/2000) AS [ShipmentWeight] ,((SUM(up.[Shipment_Weight]))/COUNT(up.[Stops])) AS [ShpmntAvg] FROM [dbo].[UnitProductivity] u INNER JOIN [dbo].[UnitProductivityDetails] up ON u.UnitProductivityId = up.UnitProductivityId GROUP BY u.fleet, u.unit HAVING(COUNT(up.[Stops]) > 0

有关HAVING子句的更多信息:http://www.w3schools.com/sql/sql_having.asp