我有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作为[停止]所以我想数(只有一天停止)。我会在这里使用嵌套选择以及如何使用?
由于
答案 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