Sql Oracle-将输出中的行合并为1

Sql Oracle-将输出中的行合并为1,sql,oracle,Sql,Oracle,当我运行以下查询时: 选择从NAS\u db.main创建的datetime\u up、logic\u id、eqp\u name、ack 其中TRUNC(datetime up,'DD')>=至时间戳('04/18/2012,'MM/DD/YYYY'),以及 TRUNC(datetime_up,'DD')试试这个 SELECT datetime_up, logic_id,eqp_name,ack, created FROM NAS_db.main WHERE TRUNC(datet

当我运行以下查询时:

选择从NAS\u db.main创建的datetime\u up、logic\u id、eqp\u name、ack
其中TRUNC(datetime up,'DD')>=至时间戳('04/18/2012,'MM/DD/YYYY'),以及
TRUNC(datetime_up,'DD')试试这个

SELECT datetime_up, logic_id,eqp_name,ack, created FROM NAS_db.main WHERE    
  TRUNC(datetime_up,'DD') >= TO_TIMESTAMP ('04/18/2012', 'MM/DD/YYYY') and 
TRUNC(datetime_up,'DD') <= TO_TIMESTAMP ('04/21/2012', 'MM/DD/YYYY') AND eqp_name 
='Router-A'  where ack and created!=0
 GROUP BY datetime_up,eqp_name, logic_id,ack,created

您按所有列进行分组,而不使用任何聚合函数,这相当于
选择distinct

假设
ack
只能是零或一,您可以在该列上使用
max()
,并通过
将其从
组中排除:

SELECT datetime_up, logic_id, eqp_name, max(ack), created
...
GROUP BY datetime_up, eqp_name, logic_id, created
不确定创建的
将如何运行,您可能也希望对该列执行相同的操作

在更复杂的情况下,您可以使用分析函数按某些标准对行进行排序,然后在外部
选择
,但我认为这太过分了

SELECT datetime_up, logic_id,eqp_name,ack, created FROM NAS_db.main WHERE    
  TRUNC(datetime_up,'DD') >= TO_TIMESTAMP ('04/18/2012', 'MM/DD/YYYY') and 
TRUNC(datetime_up,'DD') <= TO_TIMESTAMP ('04/21/2012', 'MM/DD/YYYY') AND eqp_name 
='Router-A'  where ack and created!=0
 GROUP BY datetime_up,eqp_name, logic_id,ack,created
 where ack=1
SELECT datetime_up, logic_id, eqp_name, max(ack), created
...
GROUP BY datetime_up, eqp_name, logic_id, created