2017-02-03 1 views
-1

У меня возникла проблема с получением этого оператора SQL для фильтрации таблицы по дате начала и окончания даты. Все поля находятся в одной таблице, и я не уверен, что я сформулировал что-то неправильно ... Я, очевидно, новичок в SQL заблаговременно за любую помощь, которую вы могли бы предоставить.У меня возникли проблемы с получением этой инструкции SQL для фильтрации таблицы по дате начала и окончания даты

ExecuteSQL (
" 
SELECT sum (Billing_Tab_Hours_Total_1 
+ Billing_Tab_Hours_Total_2 
+ Billing_Tab_Hours_Total_3 
+ Billing_Tab_Hours_Total_4 
+ Billing_Tab_Hours_Total_5 
+ Billing_Tab_Hours_Total_6 
+ Billing_Tab_Hours_Total_7 
+ Billing_Tab_Hours_Total_8 
+ Billing_Tab_Hours_Total_9 
+ Billing_Tab_Hours_Total_10) 
FROM TABLE 
WHERE Billing_Tab_Name_1 = 'Employee Name' 
OR Billing_Tab_Name_2 = ‘Employee Name’ 
OR Billing_Tab_Name_3 = 'Employee Name' 
OR Billing_Tab_Name_4 = 'Employee Name' 
OR Billing_Tab_Name_5 = 'Employee Name' 
OR Billing_Tab_Name_6 = 'Employee Name' 
OR Billing_Tab_Name_7 = 'Employee Name' 
OR Billing_Tab_Name_8 = 'Employee Name' 
OR Billing_Tab_Name_9 = 'Employee Name' 
OR Billing_Tab_Name_10 = 'Employee Name' 
AND Billing_Tab_Date_1 BETWEEN Report_Starting_Date and  Report_Ending_Date 
OR Billing_Tab_Date_2 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_3 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_4 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_5 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_6 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_7 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_8 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_9 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_10 BETWEEN Report_Starting_Date AND Report_Ending_Date 
" 
; "" ; "") 
+4

Если вы исправите формат файла (чтобы иметь только одну строку в дате), то этот запрос (и, возможно, другие) будет значительным impler. –

+0

При смешивании значений AND и OR в предложении where часто бывает полезно добавить скобки и тщательно их сгруппировать. –

+0

проблема заключается в том, что результат формулы игнорирует ВСЕ положения даты начала и окончания даты. Он возвращает общую сумму для сотрудника для таблицы –

ответ

0

попробовать это:

, если вы не заботитесь о соответствуя Billing_Tab_name с Billing_Tab_hours, то вы можете использовать это:

ExecuteSQL (" 
SELECT sum (Billing_Tab_Hours_Total_1 
+ Billing_Tab_Hours_Total_2 
+ Billing_Tab_Hours_Total_3 
+ Billing_Tab_Hours_Total_4 
+ Billing_Tab_Hours_Total_5 
+ Billing_Tab_Hours_Total_6 
+ Billing_Tab_Hours_Total_7 
+ Billing_Tab_Hours_Total_8 
+ Billing_Tab_Hours_Total_9 
+ Billing_Tab_Hours_Total_10) 
FROM TABLE 
WHERE (Billing_Tab_Name_1 = 'Employee Name' 
OR Billing_Tab_Name_2 = ‘Employee Name’ 
OR Billing_Tab_Name_3 = 'Employee Name' 
OR Billing_Tab_Name_4 = 'Employee Name' 
OR Billing_Tab_Name_5 = 'Employee Name' 
OR Billing_Tab_Name_6 = 'Employee Name' 
OR Billing_Tab_Name_7 = 'Employee Name' 
OR Billing_Tab_Name_8 = 'Employee Name' 
OR Billing_Tab_Name_9 = 'Employee Name' 
OR Billing_Tab_Name_10 = 'Employee Name') 
AND (Billing_Tab_Date_1 BETWEEN Report_Starting_Date and  Report_Ending_Date 
OR Billing_Tab_Date_2 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_3 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_4 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_5 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_6 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_7 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_8 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_9 BETWEEN Report_Starting_Date AND Report_Ending_Date 
OR Billing_Tab_Date_10 BETWEEN Report_Starting_Date AND Report_Ending_Date) 
"; "" ; "") 

Но если они должны соответствовать, то вам нужно это:

ExecuteSQL (" 
SELECT sum (Billing_Tab_Hours_Total_1 
+ Billing_Tab_Hours_Total_2 
+ Billing_Tab_Hours_Total_3 
+ Billing_Tab_Hours_Total_4 
+ Billing_Tab_Hours_Total_5 
+ Billing_Tab_Hours_Total_6 
+ Billing_Tab_Hours_Total_7 
+ Billing_Tab_Hours_Total_8 
+ Billing_Tab_Hours_Total_9 
+ Billing_Tab_Hours_Total_10) 
FROM TABLE 
WHERE (Billing_Tab_Name_1 = 'Employee Name' AND Billing_Tab_Date_1 BETWEEN Report_Starting_Date and  Report_Ending_Date) 
OR (Billing_Tab_Name_2 = ‘Employee Name’ AND Billing_Tab_Date_2 BETWEEN Report_Starting_Date AND Report_Ending_Date) 
OR (Billing_Tab_Name_3 = 'Employee Name' AND Billing_Tab_Date_3 BETWEEN Report_Starting_Date AND Report_Ending_Date) 
OR (Billing_Tab_Name_4 = 'Employee Name' AND Billing_Tab_Date_4 BETWEEN Report_Starting_Date AND Report_Ending_Date) 
OR (Billing_Tab_Name_5 = 'Employee Name' AND Billing_Tab_Date_5 BETWEEN Report_Starting_Date AND Report_Ending_Date) 
OR (Billing_Tab_Name_6 = 'Employee Name' AND Billing_Tab_Date_6 BETWEEN Report_Starting_Date AND Report_Ending_Date) 
OR (Billing_Tab_Name_7 = 'Employee Name' AND Billing_Tab_Date_7 BETWEEN Report_Starting_Date AND Report_Ending_Date) 
OR (Billing_Tab_Name_8 = 'Employee Name' AND Billing_Tab_Date_8 BETWEEN Report_Starting_Date AND Report_Ending_Date) 
OR (Billing_Tab_Name_9 = 'Employee Name' AND Billing_Tab_Date_9 BETWEEN Report_Starting_Date AND Report_Ending_Date) 
OR (Billing_Tab_Name_10 = 'Employee Name' AND Billing_Tab_Date_10 BETWEEN Report_Starting_Date AND Report_Ending_Date) 
"; "" ; "") 
+0

Действительно ли это нормально, если платежное имя 1 было сотрудником, а дата выставления счета 9 находится в пределах требуемого диапазона? Или имя счета и дата фактуры должны совпадать для соответствующего номера (например: имя 1 и дата 1)? –

+0

все зависит от того, каковы критерии. запрос, как он был показан в вопросе, кажется неправильным. @DavidCram спасибо, что я обновил ответ, чтобы включить оба условия. но на самом деле должно быть больше описания в вопросе. –

+0

Спасибо за ответ, да billing_tab_name_ # должен соответствовать billing_tab_hours_total_ # –

Смежные вопросы