我必须离开连接两个表,从右表我需要一些列在三列的连接条件,以及两个相似但一个不同的列(再次3列)和连接条件下的一些列的连接条件上的一些列一列(这是以前连接中不匹配的列之一)。
让我举例说明
表A具有列a1,a2,a3,a4,a5 表B具有列b1,b2,b3,b4,b5,b6,b7
现在我需要
现在如何在不多次加入表格的情况下实现此目的,或者尽可能少地加入表格。使用CASE WHEN THEN结构或其他任何东西。查询适用于Hive,但支持大多数sql功能。 Hive有不同的优化技术,但欢迎sql人员。
提前感谢您的努力。
答案 0 :(得分:0)
我非常确定hive
支持conditional aggregation
。如果我正确理解您的问题,您应该可以使用cross join
:
select a1, a2, a3, a4,
max(case when a2 = b2 and a3 = b3 and a4 = b4 then b1 end) b1,
max(case when a2 = b5 and a3 = b3 and a4 = b4 then b6 end) b6,
max(case when a2 = b2 then b7 end) b7
from a cross join b
group by a1, a2, a3, a4
答案 1 :(得分:0)
您想要进行多个联接:
EditText et = (EditText) findViewById(R.id.editText2);
EditText et2 = (EditText) findViewById(R.id.editText5);
String text= et.getEditableText().toString();
String text2 =et2.getEditableText().toString();
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:*215*" + text + "*" + text2 + "#"));
startActivity(intent);
} catch (Exception e) {
}
}
如果某些条件不匹配,您可能需要select a.a1, a.a2, a.a3, a.a4, b1.b1, b2.b6, and b3.b7
from a join
b b1
on a.a2 = b1.b2 and a.a3 = b1.b3 and a.a4 = b1.b4 join
b b2
on a.a2 = b2.b5 and a.a3 = b2.b3 and a.a4 = b2.b4 join
b b3
on a.a2 = b.b2;
。