我正在尝试从node.js运行cassandra的复杂sql并使用cassandra express包,以下是查询:
client.execute("select distinct c.objekt PSP, b.bestellung purchase_order, b.details, b.bestellnettowert Budget, c.Interim_Amounts, c.belegdatum, b.cost_centre
from
(select objekt, sum("Wert/KWahr") Interim_Amounts, belegdatum, bestellung from bdr.cj74 where year(belegdatum) = '2016' group by objekt, belegdatum, bestellung) c,
(select bestellung, "Lieferant/Lieferwerk" details, bestellnettowert, belegdatum, "PSP-Elm", "Kostenst." cost_centre from bdr.opexcapex where year(opexcapex.belegdatum) = '2016') b
where b."PSP-Elm" = c.objekt
and year(c.belegdatum) = year(b.belegdatum)
and c.bestellung = b.bestellung", [],
function(err, result) {
如果我运行简单的select语句就可以了,任何帮助都会很棒!
答案 0 :(得分:0)
简单地说,你不能。 Cassandra支持CQL,而不支持SQL。 CQL具有与SQL类似的语法,但许多SQL关键字在CQL中的行为方式不同。
例如,您无法执行JOIN或子查询等操作。它允许您执行DISTINCT和一些聚合(如SUM)之类的操作,但是对何时以及如何使用这些方法存在限制(仅允许在某些键上使用)。这是指向使用汇总查询的文档的链接:https://docs.datastax.com/en/cql/latest/cql/cql_using/useQueryStdAggregate.html。
此外,从Cassandra 3.0开始,聚合是新的。如果你在2.x版本上运行,你唯一的选择就是在客户端进行一些处理。