Есть две таблицы, Внешняя таблица A и Просмотр таблицы B .
Данные во внешней таблице связаны с Hadoop через Polybase.
Представление таблицы объединяет все внешние таблицы A и другие внешние таблицы (аналогичные A).
Например:
A:
--------------------
number | time
--------------------
0 |2018-09-10
1 |2018-09-10
2 |2018-09-10
--------------------
B:
--------------------
number | time
--------------------
0 |2018-09-10
1 |2018-09-10
2 |2018-09-10
3 |2018-09-11
--------------------
Теперь я не знаю, почему под SQL результаты отличаются?
И я нахожу другой порядок выполнения в этих SQL. В случаях 1 и 2 «выберите 5.0 / номер» выполняется первым. В случаях 3 и 4, где сначала выполняется предложение.
кейс 1
DECLARE @date datetime ='2018-09-10';
select 5.0/number
from A
where time = @date and number > 0
Result:
Cannot execute the query "Remote Query" against OLE DB provider "SQLNCLI11" for linked server "(null)". [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Divide by zero error encountered.
дело 2
DECLARE @date datetime ='2018-09-10';
select 5.0/temp.number
from
(
select number as number
from A
where time = @date and number > 0
)temp
Result:
Cannot execute the query "Remote Query" against OLE DB provider "SQLNCLI11" for linked server "(null)". [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Divide by zero error encountered.
кейс 3
select 5.0/number
from A
where time = '2018-09-10' and number > 0
Result:
5.0
2.5
корпус 4 (из B)
DECLARE @date datetime ='2018-09-10';
select 5.0/number
from B
where time = @date and number > 0
Result:
5.0
2.5
Спасибо !!