Ben bir günde emir tarih ve saate göre grup emirlerine aşağıdaki SQL sorgusu:QueryDSL grup
select to_char(o.order_date, 'YYYY-MM-DD HH24') order_date_hour,
sum(o.quantity) quantity
from orders o
where o.order_date >= to_date('01.02.2016', 'DD.MM.YYYY')
and o.order_date < to_date('03.02.2016', 'DD.MM.YYYY')
group by to_char(o.order_date, 'YYYY-MM-DD HH24')
order by to_char(o.order_date, 'YYYY-MM-DD HH24');
aşağıdaki sonucu için bir örnek olarak:
ORDER_DATE_HOUR | QUANTITY
2016-02-01 06 | 10
2016-02-03 09 | 20
Sorgu, SQL geliştiricisi kullanılarak beklendiği gibi çalışır. https://groups.google.com/forum/#!msg/querydsl/WD04ZRon-88/nP5QhqhwCUcJ
alıyorum istisnadır:
java.sql.SQLSyntaxErrorException:
SQLQuery q = queryFactory.createSQLQuery();
q.from(order);
q.where(order.orderDate.goe(Timestamp.valueOf(from)))
.where(order.orderDate.lt(Timestamp.valueOf(to)));
q.groupBy(to_char(order.orderDate, "YYYY-MM-DD HH24"));
q.orderBy(order.orderDate.asc());
List<Tuple> result = q.list(to_char(order.orderDate, "YYYY-MM-DD HH24"), order.quantity);
to_char bu parçacığı bulunan bir yöntemdir: QueryDSL yılında aşağıdaki sorgu ile geldi ORA -00979: GROUP BY ifadesi yok
Hiç şanssız sorguda birkaç varyasyon denedim.
Sorgu neden başarısız olduğunu bilen var mı? Sen özel anlatımlar inşa etmek için StringTemplate ve DateTemplate kullanabilirsiniz
, ama hızlı bir aramadan kodunuzun son satırında 'order.quantity.sum()' olmalıdır? Şu anda bu sütunu birleştirmiyorsunuz, ki bu da düşündüğüm hatayı açıklıyor. –
Bu sorun olabilir. Her şeyi tekrar kontrol ettim ve şimdilik işe yarıyor. Teşekkür ederim :) –