2 개의 별도의 쿼리를 하나로 병합하려고합니다. Jaspersoft 리포팅 스튜디오에서 사용하고 있습니다. 첫 번째 쿼리의 출력은 지정된 날짜 범위 사이의 테이블 항목에 대한 세부 정보입니다. 두 번째 쿼리의 출력에는 첫 번째 쿼리의 출력 양 중 일부가 자체 매개 변수와 함께 포함됩니다. 그들은 별개로 잘 작동합니다.별도의 2 개의 SQL 쿼리 합치기
그래서 하나의 단일 쿼리에 이들을 결합 할 수 있는지 확실하지 않습니다.
질의 1 :
SELECT
`alarminfo`.`condition_id`,
`alarminfo`.`landscape_h`,
`landscape`.`domain_name`,
`model`.`model_name`,
`alarminfo`.`set_time`,
`alarminfo`.`clear_time` ,
`alarminfo`.`alarm_key`,
`alarmtitle`.`title`,
`alarminfo`.`ack_time`,
`alarminfo`.`set_troubleticket_id`,
`alarminfo`.`first_assigned_time`,
`alarmcondition`.`condition_name`,
TIMESTAMPDIFF(SECOND,alarminfo.set_time ,alarminfo.clear_time) seconds_to_clear,
TIMESTAMPDIFF(SECOND,alarminfo.set_time ,'2017-09-01 00:00:00.0') alerttime
FROM alarminfo
INNER JOIN landscape ON (alarminfo.landscape_h=landscape.landscape_h)
INNER JOIN alarmtitle ON (alarminfo.alarm_title_id=alarmtitle.alarm_title_id)
INNER JOIN model ON (alarminfo.model_key=model.model_key)
INNER JOIN alarmcondition on (alarminfo.condition_id=alarmcondition.condition_id)
where
((alarminfo.set_time>='2017-09-01 00:00:00.0' AND alarminfo.set_time<'2017-09-30 23:59:59.0') AND
(alarminfo.clear_time>='2017-09-01 00:00:00.0' AND alarminfo.clear_time<'2017-09-30 23:59:59.0') AND
(alarmcondition.condition_name IN ('Critical', 'Major', 'Minor')) AND
(TIMESTAMPDIFF(SECOND,alarminfo.set_time ,alarminfo.ack_time)>60*15)
)
order by `alarminfo`.`set_troubleticket_id`DESC , `alarminfo`.`ack_time` , `alarminfo`.`set_time` , `alarminfo`.`landscape_h`, `alarminfo`.`condition_id`
질의 2 : 이것은 불행하게도 작동하지
SELECT
`alarminfo`.`condition_id`,
`alarminfo`.`landscape_h`,
`landscape`.`domain_name`,
`model`.`model_name`,
`alarminfo`.`set_time`,
`alarminfo`.`clear_time` ,
`alarminfo`.`alarm_key`,
`alarmtitle`.`title`,
`alarminfo`.`ack_time`,
`alarminfo`.`set_troubleticket_id`,
`alarminfo`.`first_assigned_time`,
`alarmcondition`.`condition_name`,
TIMESTAMPDIFF(SECOND,alarminfo.set_time ,alarminfo.clear_time) seconds_to_clear,
TIMESTAMPDIFF(SECOND,alarminfo.set_time ,'2017-09-01 00:00:00.0') alerttime
FROM alarminfo
INNER JOIN landscape ON (alarminfo.landscape_h=landscape.landscape_h)
INNER JOIN alarmtitle ON (alarminfo.alarm_title_id=alarmtitle.alarm_title_id)
INNER JOIN model ON (alarminfo.model_key=model.model_key)
INNER JOIN alarmcondition on (alarminfo.condition_id=alarmcondition.condition_id)
where
((alarminfo.set_time>='2017-09-01 00:00:00.0' AND alarminfo.set_time<'2017-09-30 23:59:59.0') AND
(alarminfo.clear_time>='2017-09-01 00:00:00.0' AND alarminfo.clear_time<'2017-09-30 23:59:59.0') AND
(alarmcondition.condition_name IN ('Critical', 'Major', 'Minor')) AND
(TIMESTAMPDIFF(SECOND,alarminfo.set_time ,alarminfo.ack_time)>60*15)
)
count(*) 'Total alarms',
sum(case when ack_time is not null then 1 else 0 end) as 'total acknowledged',
sum(case when (TIMESTAMPDIFF(SECOND,alarminfo.set_time ,alarminfo.ack_time)<60*15) then 1 else 0 end) as 'Total acknowledged within 15min',
sum(case when (TIMESTAMPDIFF(SECOND,alarminfo.set_time ,alarminfo.ack_time)>60*15) then 1 else 0 end) as 'Total acknowledged after 15min'
FROM alarminfo
where
alarminfo.set_time>='2017-09-01 00:00:00.0' AND alarminfo.set_time<'2017-09-30 23:59:59.0'
)
order by `alarminfo`.`set_troubleticket_id`DESC , `alarminfo`.`ack_time` , `alarminfo`.`set_time` , `alarminfo`.`landscape_h`, `alarminfo`.`condition_id`
을 :
select
count(*) 'Total alarms',
sum(case when ack_time is not null then 1 else 0 end) as 'total acknowledged',
sum(case when (TIMESTAMPDIFF(SECOND,alarminfo.set_time ,alarminfo.ack_time)<60*15) then 1 else 0 end) as 'Total acknowledged within 15min',
sum(case when (TIMESTAMPDIFF(SECOND,alarminfo.set_time ,alarminfo.ack_time)>60*15) then 1 else 0 end) as 'Total acknowledged after 15min'
FROM alarminfo
where
alarminfo.set_time>='2017-09-01 00:00:00.0' AND alarminfo.set_time<'2017-09-30 23:59:59.0'
이것은 내가 함께 병합하려고하는 방법이다. 누군가 병합하는 방법에 대한 아이디어가 있습니까?
이 사건에 대한 샘플 입력 및 예상 출력을 보여주십시오 R로
condition_id
). –
보고 용어로 실제로 해결하려는 것은 무엇입니까? – Narcis
첫 번째 출력은 더 큰 쿼리입니다. 초는 작은 쿼리입니다. 이것은 mysql 쿼리 브라우저에서만 출력됩니다. 이 쿼리는 jaspersoft에서 사용되며 여기서 특정 데이터 만 사용합니다. 두 번째 알람은 실제로 특정 알람의 총계입니다. 난 그냥이 두 쿼리가 함께 갈 수 있도록하는 방법을 궁금 [여기 이미지 설명을 입력합니다] [1] [여기 이미지 설명을 입력합니다] [2] [1] : HTTPS : //i.stack. imgur.com/gjIQM.png [2] : https://i.stack.imgur.com/oG7QJ.png – CaPsLoCkEr