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