Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
snufse
Constraint Violating Yak Guru
469 Posts |
Posted - 2009-05-29 : 13:18:30
|
I have a query that renders detailed equipment hours by equipment id. Query works fine. My question is: Need to be able to select only records where the total hours for each equipment ID is less that a given number. Not sure if that is possible using the existing query.SELECT substring(dbo.Job.CompanyJobId, 1, 10) as job, substring(dbo.Item.CompanyItemId, 1, 10) as costcode, dbo.Batch.ReportDate as jobdate, dbo.Equipment.CompanyEquipmentID as equipmentID, substring(dbo.Equipment.Name, 1, 20) as equipmentname, dbo.EquipmentLaborEvent.Hours as hours, substring(dbo.EventStatusType.Name, 1, 1) as event_code, dbo.EventStatusType.Name as event_name, substring (dbo.Batch.Name, 1, charindex('-',dbo.Batch.Name)-1) as foreman, substring (e2.UserName, 1, 10) as approver FROM dbo.Equipment inner join dbo.EquipmentLaborEvent on dbo.EquipmentLaborEvent.EquipmentGuid = dbo.Equipment.EquipmentGuid inner join dbo.Region on dbo.Region.RegionGuid = Equipment.RegionGuid inner join dbo.Event on dbo.Event.EventGuid = dbo.EquipmentLaborEvent.EventGuid inner join dbo.EventStatusType on dbo.EventStatusType.EventStatusTypeGuid = dbo.Event.EventStatus inner join dbo.Job on dbo.Job.JobGuid = dbo.Event.JobGuid inner join dbo.Item on dbo.Item.ItemGuid = dbo.Event.ItemGuid inner join dbo.Batch on dbo.Batch.BatchGuid = dbo.Event.BatchGuid left join dbo.Account e2 on e2.AccountGuid = dbo.Event.ApprovedByAccountGuid WHERE (@Division IS Null OR dbo.Region.CompanyRegionID = @Division) and (@JobNumber IS Null or dbo.Job.CompanyJobID = @JobNumber) and (@DateFrom IS Null OR dbo.Batch.Reportdate >= @DateFrom) and (@DateTo IS Null OR dbo.Batch.ReportDate <= @DateTo) and dbo.EquipmentLaborEvent.Hours > 0I tried to add this:GROUP BY dbo.Job.CompanyJobId, dbo.Equipment.CompanyEquipmentID, dbo.Equipment.NameHAVING (@Hours IS Null or sum(dbo.EquipmentlaborEvent.Hours) < @Hours) |
|
|
Lamprey
Master Smack Fu Yak Hacker
4614 Posts |
Posted - 2009-05-29 : 13:28:18
|
Just making a guess based on your query:SELECT substring(dbo.Job.CompanyJobId, 1, 10) as job, substring(dbo.Item.CompanyItemId, 1, 10) as costcode, dbo.Batch.ReportDate as jobdate, dbo.Equipment.CompanyEquipmentID as equipmentID, substring(dbo.Equipment.Name, 1, 20) as equipmentname, dbo.EquipmentLaborEvent.Hours as hours, substring(dbo.EventStatusType.Name, 1, 1) as event_code, dbo.EventStatusType.Name as event_name, substring (dbo.Batch.Name, 1, charindex('-',dbo.Batch.Name)-1) as foreman, substring (e2.UserName, 1, 10) as approver FROM dbo.Equipment inner join ( SELECT EquipmentGuid FROM dbo.EquipmentLaborEvent GROUP BY EquipmentGuid HAVING SUM(Hours) > @Hours ) AS EquipmentLaborEvent on dbo.EquipmentLaborEvent.EquipmentGuid = dbo.Equipment.EquipmentGuid inner join dbo.Region on dbo.Region.RegionGuid = Equipment.RegionGuid inner join dbo.Event on dbo.Event.EventGuid = dbo.EquipmentLaborEvent.EventGuid inner join dbo.EventStatusType on dbo.EventStatusType.EventStatusTypeGuid = dbo.Event.EventStatus inner join dbo.Job on dbo.Job.JobGuid = dbo.Event.JobGuid inner join dbo.Item on dbo.Item.ItemGuid = dbo.Event.ItemGuid inner join dbo.Batch on dbo.Batch.BatchGuid = dbo.Event.BatchGuid left join dbo.Account e2 on e2.AccountGuid = dbo.Event.ApprovedByAccountGuid WHERE (@Division IS Null OR dbo.Region.CompanyRegionID = @Division) and (@JobNumber IS Null or dbo.Job.CompanyJobID = @JobNumber) and (@DateFrom IS Null OR dbo.Batch.Reportdate >= @DateFrom) and (@DateTo IS Null OR dbo.Batch.ReportDate <= @DateTo) |
 |
|
|
snufse
Constraint Violating Yak Guru
469 Posts |
Posted - 2009-05-29 : 14:05:08
|
Getting error:SELECT substring(dbo.Job.CompanyJobId, 1, 10) as job, substring(dbo.Item.CompanyItemId, 1, 10) as costcode, dbo.Batch.ReportDate as jobdate, dbo.Equipment.CompanyEquipmentID as equipmentID, substring(dbo.Equipment.Name, 1, 20) as equipmentname, dbo.EquipmentLaborEvent.Hours as hours, substring(dbo.EventStatusType.Name, 1, 1) as event_code, dbo.EventStatusType.Name as event_name, substring (dbo.Batch.Name, 1, charindex('-',dbo.Batch.Name)-1) as foreman, substring (e2.UserName, 1, 10) as approver FROM dbo.Equipment inner join ( SELECT EquipmentGuid FROM dbo.EquipmentLaborEvent GROUP BY EquipmentGuid HAVING SUM(Hours) < 6 ) AS EquipmentLaborEvent on dbo.EquipmentLaborEvent.EquipmentGuid = dbo.Equipment.EquipmentGuid inner join dbo.Region on dbo.Region.RegionGuid = Equipment.RegionGuid inner join dbo.Event on dbo.Event.EventGuid = dbo.EquipmentLaborEvent.EventGuid inner join dbo.EventStatusType on dbo.EventStatusType.EventStatusTypeGuid = dbo.Event.EventStatus inner join dbo.Job on dbo.Job.JobGuid = dbo.Event.JobGuid inner join dbo.Item on dbo.Item.ItemGuid = dbo.Event.ItemGuid inner join dbo.Batch on dbo.Batch.BatchGuid = dbo.Event.BatchGuid left join dbo.Account e2 on e2.AccountGuid = dbo.Event.ApprovedByAccountGuid WHERE dbo.Region.CompanyRegionID = '00060' The column prefix 'dbo.EquipmentLaborEvent' does not match with a table name or alias name used in the query. |
 |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2009-05-29 : 14:45:05
|
| [code]SELECT substring(dbo.Job.CompanyJobId, 1, 10) as job, substring(dbo.Item.CompanyItemId, 1, 10) as costcode, dbo.Batch.ReportDate as jobdate, dbo.Equipment.CompanyEquipmentID as equipmentID, substring(dbo.Equipment.Name, 1, 20) as equipmentname, m.hours, substring(dbo.EventStatusType.Name, 1, 1) as event_code, dbo.EventStatusType.Name as event_name, substring (dbo.Batch.Name, 1, charindex('-',dbo.Batch.Name)-1) as foreman, substring (e2.UserName, 1, 10) as approver FROM dbo.Equipment inner join dbo.EquipmentLaborEvent on dbo.EquipmentLaborEvent.EquipmentGuid = dbo.Equipment.EquipmentGuid INNER JOIN (SELECT dbo.Equipment.CompanyEquipmentID,SUM(dbo.EquipmentLaborEvent.Hours) AS hoursFROM dbo.Equipmentinner join dbo.EquipmentLaborEvent on dbo.EquipmentLaborEvent.EquipmentGuid = dbo.Equipment.EquipmentGuidGROUP BY dbo.Equipment.CompanyEquipmentIDHAVING SUM(dbo.EquipmentLaborEvent.Hours)>0)mON m.CompanyEquipmentID= dbo.Equipment.CompanyEquipmentID inner join dbo.Region on dbo.Region.RegionGuid = dbo.Equipment.RegionGuid inner join dbo.Event on dbo.Event.EventGuid = dbo.EquipmentLaborEvent.EventGuid inner join dbo.EventStatusType on dbo.EventStatusType.EventStatusTypeGuid = dbo.Event.EventStatus inner join dbo.Job on dbo.Job.JobGuid = dbo.Event.JobGuid inner join dbo.Item on dbo.Item.ItemGuid = dbo.Event.ItemGuid inner join dbo.Batch on dbo.Batch.BatchGuid = dbo.Event.BatchGuid left join dbo.Account e2 on e2.AccountGuid = dbo.Event.ApprovedByAccountGuid WHERE (@Division IS Null OR dbo.Region.CompanyRegionID = @Division) and (@JobNumber IS Null or dbo.Job.CompanyJobID = @JobNumber) and (@DateFrom IS Null OR dbo.Batch.Reportdate >= @DateFrom) and (@DateTo IS Null OR dbo.Batch.ReportDate <= @DateTo) [/code] |
 |
|
|
Lamprey
Master Smack Fu Yak Hacker
4614 Posts |
Posted - 2009-05-29 : 15:24:40
|
quote: Originally posted by snufse Getting error:SELECT substring(dbo.Job.CompanyJobId, 1, 10) as job, substring(dbo.Item.CompanyItemId, 1, 10) as costcode, dbo.Batch.ReportDate as jobdate, dbo.Equipment.CompanyEquipmentID as equipmentID, substring(dbo.Equipment.Name, 1, 20) as equipmentname, dbo.EquipmentLaborEvent.Hours as hours, substring(dbo.EventStatusType.Name, 1, 1) as event_code, dbo.EventStatusType.Name as event_name, substring (dbo.Batch.Name, 1, charindex('-',dbo.Batch.Name)-1) as foreman, substring (e2.UserName, 1, 10) as approver FROM dbo.Equipment inner join ( SELECT EquipmentGuid FROM dbo.EquipmentLaborEvent GROUP BY EquipmentGuid HAVING SUM(Hours) < 6 ) AS EquipmentLaborEvent on dbo.EquipmentLaborEvent.EquipmentGuid = dbo.Equipment.EquipmentGuid inner join dbo.Region on dbo.Region.RegionGuid = Equipment.RegionGuid inner join dbo.Event on dbo.Event.EventGuid = dbo.EquipmentLaborEvent.EventGuid inner join dbo.EventStatusType on dbo.EventStatusType.EventStatusTypeGuid = dbo.Event.EventStatus inner join dbo.Job on dbo.Job.JobGuid = dbo.Event.JobGuid inner join dbo.Item on dbo.Item.ItemGuid = dbo.Event.ItemGuid inner join dbo.Batch on dbo.Batch.BatchGuid = dbo.Event.BatchGuid left join dbo.Account e2 on e2.AccountGuid = dbo.Event.ApprovedByAccountGuid WHERE dbo.Region.CompanyRegionID = '00060' The column prefix 'dbo.EquipmentLaborEvent' does not match with a table name or alias name used in the query.
Remove the "dbo." from the derived table alias as shown above. (not sure I got them all) |
 |
|
|
snufse
Constraint Violating Yak Guru
469 Posts |
Posted - 2009-06-01 : 08:53:12
|
| Great. Worked. Thank you. |
 |
|
|
|
|
|
|
|