如何在Apache Drill

时间:2017-01-20 08:24:48

标签: apache-drill

我对Apache Drill中的CASE有一个疑问。

我正在尝试在Window system&amp ;;的最新版本的钻孔(1.9)中使用CASE。在嵌入模式下。

查看我的查询:

SELECT
CASE WHEN 
EXISTS
(SELECT distinct CS.ProviderID
 FROM <pluginName>.<dbName>.<schemaName>.<tableName1> AS `CS` 
INNER JOIN <pluginName>.<dbName>.<schemaName>.<tableName2> AS `PS` 
ON PS.ID = CS.ProviderID 
where CS.PluginName = 'some text from db' AND 
PS.Code = 'SQLSERVER' AND CS.AccessKey = 'B2S1' limit 1)
THEN 
(SELECT distinct b.`Value` from <pluginName>.<dbName>.<schemaName>.<tableName3> AS a 
inner join <pluginName>.<dbName>.<schemaName>.<tableName4> as b
 on a.ID = b.PermissionID 
inner join <pluginName>.<dbName>.<schemaName>.<tableName5> as c
 on c.RoleID=b.RoleID and c.ModuleID=1 limit 1)
ELSE 0
END FROM  <pluginName>.<dbName>.<schemaName>.<tableName3>;

我正在尝试执行此查询,但它通过了错误。

错误: -

  

org.apache.drill.common.exceptions.UserRemoteException:VALIDATION   错误:从第2行第1列到第7行,第4列:非法混合   CASE或COALESCE语句中的类型SQL Query null

我在这个查询中做错了什么。?

1 个答案:

答案 0 :(得分:0)

在Apache-drill中,你不能在case中使用select语句。实际上,根本不能对列使用内部select语句。

尝试将内部选择作为一个单独的表并与主表连接,这应该有效。