我对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
我在这个查询中做错了什么。?
答案 0 :(得分:0)
在Apache-drill中,你不能在case中使用select语句。实际上,根本不能对列使用内部select语句。
尝试将内部选择作为一个单独的表并与主表连接,这应该有效。