有两个表,外部表A和视图表B。外部表中的数据通过Polybase连接到Hadoop。视图表合并了所有外部表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中,首先执行"select 5.0/number“。在案例3& 4中,首先执行where子句。
案例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谢谢!!
发布于 2018-09-11 11:23:42
这也会产生错误吗?
DECLARE @date datetime ='2018-09-10';
select 5.0/temp.number
from
(
select time, number
from A
where number > 0
)temp
where temp.time = @datehttps://stackoverflow.com/questions/52273337
复制相似问题