У меня есть таблица, которая выглядит следующим образом:
CREATE TABLE [dbo].[StudentTime]
([StudentTimeID] [int] NOT NULL IDENTITY(164352, 1),
[StudentID] [int] NOT NULL,
--Some columns...
[EntryDateTime] [datetime] NOT NULL,
[Hours] [decimal] (6, 2) NOT NULL CONSTRAINT [DF_StudentTime_Hours] DEFAULT ((0))
--Some more columns
)
Когда я запрашиваю ее
SELECT COUNT(DISTINCT StudentID) AS StudentCount,
SUM(HOURS) AS TotalHours
FROM dbo.StudentTime
WHERE EntryDateTime >= '5/1/2010'
AND EntryDateTime < '5/1/2011'
, я получаю такой результат:
StudentCount: 9890
TotalHours: 775645.5
Теперь яхочу отфильтровать студентов из подсчета, которые по какой-либо причине накопили 0 часов за отчетный период:
SELECT COUNT(DISTINCT StudentID) AS StudentCount,
SUM(HOURS) AS TotalHours
FROM dbo.StudentTime
WHERE EntryDateTime >= '5/1/2010'
AND EntryDateTime < '5/1/2011'
AND Hours > 0
Я получаю такой результат:
StudentCount: 9792 --Expected to be smaller.
TotalHours: 775699.25 --Expected to be same, but is larger?!?!
Это потому, что яесть AND Hours > 0
(INT) против AND Hours > 0.0
(ДЕСЯТИЧНЫЙ)?Когда я делаю это, где утверждение, происходит ли неявный CAST?