Sql 按除两个日期字段以外的所有列分组,并在查询中操作日期字段

Sql 按除两个日期字段以外的所有列分组,并在查询中操作日期字段,sql,oracle,Sql,Oracle,我有一个查询,返回一组列,包括两个日期字段:开始日期和结束日期。我需要修改查询,以便如果除日期以外的所有字段都相等,则合并行,并将开始日期更改为所有合并行的最小日期,将结束日期更改为所有合并行的最大日期 这是否可以用于CASE语句和子查询 SELECT RA, RA, START_DATE, END_DATE, RA, GT, RG, SR, SR, SR, FROM RG, RA, SR,

我有一个查询,返回一组列,包括两个日期字段:开始日期和结束日期。我需要修改查询,以便如果除日期以外的所有字段都相等,则合并行,并将开始日期更改为所有合并行的最小日期,将结束日期更改为所有合并行的最大日期

这是否可以用于CASE语句和子查询

SELECT 
    RA, 
    RA,
    START_DATE,
    END_DATE,
    RA, 
    GT,
    RG, 
    SR,   
    SR, 
    SR, 
FROM  RG,  RA,  SR,  GT
WHERE SR = RG
AND GT = RG
AND RA = 'asdH'
AND RA NOT IN ('G', 'W')
AND RA. = RG.
AND SR. = GT.;

这是对你问题的回答,我没有太多的细节,因此,还有很多需要想象:

SELECT 
    RA.field1, 
    RA.field2,
    min(START_DATE) as START_DATE,
    max(END_DATE) as END_DATE,
    RA.field3, 
    GT.field4,
    RG.field5, 
    SR.field6,   
    SR.field7, 
    SR.field8, 
FROM  RG,  RA,  SR,  GT
WHERE SR = RG
AND GT = RG
AND RA = 'asdH'
AND RA NOT IN ('G', 'W')
AND RA. = RG.
AND SR. = GT.
group by 
    RA.field1, 
    RA.field2, 
    RA.field3, 
    GT.field4,
    RG.field5, 
    SR.field6,   
    SR.field7, 
    SR.field8

提供示例数据和所需结果,这样你的问题才有意义。TuCraiN,最好将你的查询添加到我不认为问题那么复杂。如果两个日期之外的所有字段都相等,则将它们合并(分组方式),并显示其中一个日期的最小日期和另一个日期的最大日期。是的,可以使用CASE语句和子查询。嘿,谢谢。这就是我要尝试的。我会让你知道它是否有效:)这解决了它。我倾向于把小问题复杂化。。。
SELECT field1,field2,field3,field4,field5,field6,field7,field8,
min(START_DATE) as START_DATE ,max(END_DATE) as END_DATE
FROM (
SELECT field1,field2,field3,field4,field5,field6,field7,field8,START_DATE,END_DATE FROM RG
UNION
SELECT field1,field2,field3,field4,field5,field6,field7,field8,START_DATE,END_DATE from RA
UNION
SELECT field1,field2,field3,field4,field5,field6,field7,field8,START_DATE,END_DATE FROM SR
UNION
SELECT field1,field2,field3,field4,field5,field6,field7,field8,START_DATE,END_DATE
FROM GT) t
GROUP BY field1,field2,field3,field4,field5,field6,field7,field8;