Sql 按别名选择查询组

Sql 按别名选择查询组,sql,group-by,db2,resultset,Sql,Group By,Db2,Resultset,我有一个疑问: SELECT * FROM TABLE1 WHERE AREA_CODE IN ('929', '718', '347', '646') GROUP BY AREA_CODE 是否可以只获取一个名为“NEW_YORK_AREA”且包含所有这四个区号的记录行?更清楚地说,假设您在表中为上面列出的每个区号有4条记录,但您只希望获得一条别名为“NEW\u YOUR\u area”的resultrow。我希望这是明确的,让我知道如果你有任何问题,我会编辑的问题。谢谢大家,祝你们今天愉快

我有一个疑问:

SELECT * FROM TABLE1 WHERE AREA_CODE IN ('929', '718', '347', '646') GROUP BY AREA_CODE
是否可以只获取一个名为“NEW_YORK_AREA”且包含所有这四个区号的记录行?更清楚地说,假设您在表中为上面列出的每个区号有4条记录,但您只希望获得一条别名为“NEW\u YOUR\u area”的resultrow。我希望这是明确的,让我知道如果你有任何问题,我会编辑的问题。谢谢大家,祝你们今天愉快

更新:需求已更改,不再需要。谢谢大家的帮助!:

DB2支持listag。因此:

我很有帮助地添加了212,纽约最著名的区号


如果有重复项,则需要在聚合之前使用子查询删除它们。

从逻辑上讲,您要做的是将所有内容分组到同一类别中。可以通过按单个值显式分组所有行来实现这一点:

select 'NEW_YORK_AREA',
       --whatever functions you need to aggregate the data here.
       count(var1),
       max(var2)
  from table1
  where area_code in ('929', '718', '347', '646')
  group by 1
但是,如果引用表中数据的函数只有聚合函数,DB2允许您省略group by,它会自动将所有内容分组到一行中。以下内容相当于上述查询:

select 'NEW_YORK_AREA',
       count(var1),
       max(var2)
  from table1
  where area_code in ('929', '718', '347', '646')
创建区域\代码\组表怎么样

您可以加入:

SELECT t.* FROM TABLE1 "t"
INNER JOIN AREA_CODE_GROUP "g"
ON t.AREA_CODE = g.AREA_CODE
WHERE AREA_GROUP = 'NEW_YORK_AREA'

请发布表1的结构以及您希望检索的输出。
AREA_GROUP,AREA_CODE
'NEW_YORK_AREA','929'
'NEW_YORK_AREA','718'
'NEW_YORK_AREA','347'
'NEW_YORK_AREA','646'
SELECT t.* FROM TABLE1 "t"
INNER JOIN AREA_CODE_GROUP "g"
ON t.AREA_CODE = g.AREA_CODE
WHERE AREA_GROUP = 'NEW_YORK_AREA'