Вот моя проблема. Я создаю 4 временных таблицы для подсчета конкретных типов ящиков и часов сотрудника. Учитывая начальную дату и дату окончания, мы хотим знать полные ящики каждого типа (1, 2 и 3) и их общее количество часов работы в этот период времени. Все работает отлично, если есть хотя бы один из каждого типа, но если присутствуют только два типа, я получаю пустой результат для всего окончательного оператора SELECT.Может ли SELECT из одной пустой таблицы temp в SQL привести к тому, что результаты будут пустыми?
Итак, может ли инструкция SELECT, содержащая пустую таблицу temp в строке FROM, заставить все остальное возвращать пустое?
Например, диапазон дат от 6-1-10 до 6-10-10 возвращает 10 ящиков типа 1, 12 ящиков типа 2, 0 типов 3 и 36 часов, но результат отображается пустым. Но если он продлевается один день и включены 15 типов 3, запрос работает.
SELECT Count(isnull(Box_Num,0)) as Box1, emp_num INTO #Box1
FROM TEST.dbo.Prod_beta2
WHERE BoxType like '1' and time > '06/01/10' + ' 12:01 AM' and time < '06/10/10' + ' 11:59pm' and emp_num like '10467'
group by emp_num
SELECT Count(isnull(Box_Num,0)) as Box2, emp_num INTO #Box2
FROM TEST.dbo.Prod_beta2
WHERE BoxType like '2' and time > '06/01/10' + ' 12:01 AM' and time < '06/10/10' + ' 11:59pm' and emp_num like '10467'
group by emp_num
SELECT count(isnull(box_num,0)) as Box3, emp_num INTO #Box3
from TEST.dbo.Prod_beta2
WHERE BoxType like '3' and time > '06/01/10' + ' 12:01 AM' and time < '06/10/10' + ' 11:59pm' and emp_num like '10467'
group by emp_num
SELECT SUM(HOURS) as TotalHours, empid INTO #Hours
FROM TEST.dbo.Timeclock
where timein > '06/01/10' + ' 12:01 AM' and timein < '06/10/10' + ' 11:59pm' and empid like '10467'
group by empid
SELECT Box1, Box2, Box3, TotalHours
FROM #Box1, #Box2, #Box3, #Hours
DROP TABLE #Box1, #Box2, #Box3, #Hours
Почему вы создаете все эти временные таблицы, когда вы могли бы просто заполнить @variables и затем вернуть их? – DOK
«empid» и «empnum» одинаковые значения? Если это так, это можно сделать с помощью одного запроса (и без временных таблиц). Вы понимаете, что без каких-либо критериев соединения «SELECT Box1, Box2, Box3, TotalHours FROM # Box1, # Box2, # Box3, # Hours' производят [декартово произведение] (http://www.codinghorror.com/blog/ 2007/10/а-зрительно-объяснение-оф-SQL-joins.html)? –