我写了下面的查询。它没有给出任何输出
select mfg_name, wm_concat(cal_wid||','||mkt_share) concated_mkt_share from shares group by mfg_name order by cal_wid
当我使用下面的代码时,我在cal_wid
group by
时工作正常
select mfg_name, wm_concat(cal_wid||','||mkt_share) concated_mkt_share from shares group by mfg_name, **cal_wid** order by cal_wid
我正在使用jquery将这些值附加到某个应用程序。第二个查询的输出不支持我的应用程序。 I am trying to use the first query but with order by of cal_wid. So can I use the cal_wid without using it in group_by
答案 0 :(得分:1)
这是您的查询:
select mfg_name, wm_concat(cal_wid || ',' || mkt_share) as concated_mkt_share
from shares
group by mfg_name
order by cal_wid;
您无法按cal_wid
排序,因为结果集中的每一行都有多个cal_wid
。 Oracle不知道您想要订购哪个值。
您可以通过汇总功能订购,例如min()
或max()
或sum()
:
order by min(cal_id)
答案 1 :(得分:1)
当只选择一个或多个表中的字段时,任何字段(无论是否在选择列表中都有)都可用于排序。
但是,在对结果集进行分组时,您不再具有其他可用字段。现在,您不仅处理行,而且处理行组,并且每个组内的任何字段只能作为聚合的结果传递出组。
这意味着只能对分组字段或聚合结果执行排序。您的查询有一个分组字段和一个聚合结果。因此,只有四种排序选项可用:
select mfg_name, wm_concat(cal_wid||','||mkt_share) concated_mkt_share
from shares
group by mfg_name
order by mfg_name;
或
order by wm_concat(cal_wid||','||mkt_share);
或
order by mfg_name, wm_concat(cal_wid||','||mkt_share);
或
order by wm_concat(cal_wid||','||mkt_share), mfg_name;
答案 2 :(得分:0)
请从查询中删除“和”,
select mfg_name, wm_concat(cal_wid||','||mkt_share) concated_mkt_share from shares group by mfg_name order by cal_wid
这给出了输出,
select crm_campaign_id, concat(end||','|title) from events
group by crm_campaign_id order by end