почему я получаю записи за 2014,2015 год до мая 2016 года при выполнении этого запроса >

#sql

#sql

Вопрос:

 select t1.InvoiceNumber ,t1.LocalAmount  , t2.LineAmount as discount , t1.CreateDate
from CashOrderTrn t1 
left join DistrubutedDiscountDetails t2 
    on t1.InvoiceNumber =  t2.InvoiceNumber  
    and t1.CreateDate between '20160531' and  '20160701' 
    and t1.InvoiceType ='31'
  

Комментарии:

1. Тип данных столбца t1.CreateDate?

Ответ №1:

Переместите условия t1 в WHERE предложение:

 select t1.InvoiceNumber ,t1.LocalAmount , t2.LineAmount as discount ,
      t1.CreateDate
from CashOrderTrn t1
left join DistrubutedDiscountDetails t2 on t1.InvoiceNumber = t2.InvoiceNumber
WHERE t1.CreateDate between '20160531' and '20160701' and t1.InvoiceType ='31'
  

Кстати, вы храните даты в символьном столбце? Я бы рекомендовал date вместо этого столбец.

Комментарии:

1. @RowlandShaw, нет, t1, а не t2.

2. @RowlandShaw Не так, оба условия в этом where применяются к первой таблице, t1