Oracle sql组,然后按排序
我试图将查询结果分为两个组,一个标记为Y的组和一个标记为N的组。然后,我需要根据两件事对组进行排序 以下是我尝试过的查询,它不适用于按位分组:Oracle sql组,然后按排序,sql,oracle,Sql,Oracle,我试图将查询结果分为两个组,一个标记为Y的组和一个标记为N的组。然后,我需要根据两件事对组进行排序 以下是我尝试过的查询,它不适用于按位分组: SELECT location, country FROM web_loc_info WHERE flag = 'Y' OR flag = 'N' AND available_online = 'Y' GROUP BY flag ORDER BY co
SELECT location,
country
FROM web_loc_info
WHERE flag = 'Y'
OR flag = 'N'
AND available_online = 'Y'
GROUP BY flag
ORDER BY country,
location_desc
这方面的任何帮助都是非常好的,因此提前感谢您的回复您选择的所有列都需要在您的分组中,除非您对它们进行聚合。因此,在本例中,您的查询将变成:
SELECT location,
country
FROM web_loc_info
WHERE flag = 'Y'
OR flag = 'N'
AND available_online = 'Y'
GROUP BY flag,
location,
country,
location_desc
ORDER BY country,
location_desc
location\u desc
也是需要的,因为您按的顺序使用它
似乎根本不需要该组
SELECT location,
country
FROM web_loc_info
WHERE flag in ( 'Y' , 'N' )
AND available_online = 'Y'
ORDER BY flag desc,
country,
location_desc
我可以试试这个
SELECT location, country FROM web_loc_info WHERE flag = 'Y' OR flag = 'N' AND
available_online = 'Y' ORDER BY FLAG,country, location_desc
可能需要澄清的是,Oracle中的“组”(来自
GROUP BY
操作)是指将一行或多行原始数据合并到结果中的一行
回顾:
SELECT flag FROM web_loc_info GROUP BY flag ORDER BY flag
相当于
SELECT DISTINCT flag FROM web_log_info ORDER BY flag
(如果标志列仅包含Y和N值,则两个查询都将返回2行。)
因此,将来,当您想到“group”时,请询问您的意思是“汇总数据,以便每个group值有一行”(在本例中,标志列中的“Y”/“N”值)在这种情况下,GROUP BY
子句可能就是您想要的,或者如果您只是想将具有相同值的排序行放在一起,那么您只需查看ORDER BY
我想说上面的Randy和Harshit非常接近,只是我会在选择列表中包括FLAG列,这样您就可以看到位置和国家值属于哪个“组”(并且在分组发生中断的地方很明显):
您能定义“不工作”吗?您的查询的预期输出是什么?如果您在
标记上分组,则需要在其他列上进行聚合。例如,您是否需要位置
和国家
的计数
?还是希望返回所有数据,并仅在标志上首先排序?也许您想在标志
上下单,但只在第一行打印标志
?在WHERE子句中混合使用OR和and时,应使用括号阐明您的意图。
SELECT flag,
location,
country
FROM web_loc_info
WHERE flag IN ('Y', 'N')
AND available_online = 'Y'
ORDER BY flag, -- DESC if you want the Y rows to show first
location, -- DESC? or is there actually a column called LOCATION_DESC?
country