Java Oracle、Hibernate、分组依据、LISTAGG
我有表“值”: 我需要接收带有“日期”和“cryptoName”列表的结果,并接收如下内容:Java Oracle、Hibernate、分组依据、LISTAGG,java,oracle,hibernate,Java,Oracle,Hibernate,我有表“值”: 我需要接收带有“日期”和“cryptoName”列表的结果,并接收如下内容: btc ltc drk 42coin 27-DEC-14 0.2 5.0 100.0 0.01 28-DEC-14 0.22 5.5 99.5 0.02 29-DEC-14 0.23 6.1 100.6 0.03 30-DEC-14
btc ltc drk 42coin
27-DEC-14 0.2 5.0 100.0 0.01
28-DEC-14 0.22 5.5 99.5 0.02
29-DEC-14 0.23 6.1 100.6 0.03
30-DEC-14 0.25 6.0 101.2 0.03
我可以这样做:
select "Values"."date", LISTAGG("amount", ', ') WITHIN GROUP (ORDER BY "cryptoName") as "result" from "Values" GROUP BY "Values"."date"
但在本例中,我会收到两列:“date”和“result”以及我的列表,但我需要收到“date”列和几列,这取决于表中“cryptoName”的唯一性
如何操作?从11g R1开始,您可以使用PIVOT操作符。例如,见: 或者,如果您知道ctyptoName列的所有唯一值,则可以将DECODE函数与SUM一起使用,如下所示:
select date,
sum(decode(cryptoName,'value1',amount,0)) as Value1
,sum(decode(cryptoName,'value2',amount,0)) as Value2
,...
from Values
group by date
但我不知道值的唯一性如何,这取决于唯一“cryptoName”的计数
select date,
sum(decode(cryptoName,'value1',amount,0)) as Value1
,sum(decode(cryptoName,'value2',amount,0)) as Value2
,...
from Values
group by date