Объединить результат 3 SQL-запросов? - PullRequest
0 голосов
/ 21 февраля 2019

У меня были проблемы при попытке объединить результат 3 запросов:

result so far

Это результат 3 запросов, объединенных с объединением, все они выбирают данные в одном и том жетаблицы, за исключением последнего столбца, и я хотел бы получить результат в одной строке, что даст мне результат 17 в этом случае, но я не могу заставить его работать ... Любые идеи?

спасибо

edit: вот код из 3 запросов, использованных с объединением из приведенного выше результата:

select distinct SSN_ID, 
            TME_ID, 
            TME_LIBELLE, 
            convert(varchar,ssn_date_debut,103) as 'Debut',
            CONVERT (varchar,ssn_date_fin,103) as 'Fin',
            SSN_NB_JOURS,
            COUNT (atr_id) as 'Total'
from SESSION
join INSCRIPTION on INS_SSN_ID = SSN_ID
join ACTEUR on INS_ATR_ID = ATR_ID
join theme on tme_id = ssn_tme_id
join ETAT_SESSION on esn_id = ssn_esn_id
join LIEU_SESSION on LSN_SSN_ID =ssn_id
join LIEU on LEU_ID = LSN_LEU_ID
where INS_DT_CONVOCATION is not null
and SSN_ESN_ID = 15
    and SSN_JOURNEE_ETUDE = 1 
    and LEU_NOM is not null
    and year(ssn_date_debut) = YEAR(GETDATE())
 group by SSN_ID,TME_ID,TME_LIBELLE,ssn_date_debut,ssn_date_fin,SSN_NB_JOURS,ins_ssn_id

union

 select distinct SSN_ID, 
                TME_ID, 
            TME_LIBELLE, 
            convert(varchar,ssn_date_debut,103) as 'Debut',
            CONVERT (varchar,ssn_date_fin,103) as 'Fin',
            SSN_NB_JOURS,
            COUNT (atr_id) as 'Total'
from SESSION
join SESSION_FORMATEUR on ASN_SSN_ID = SSN_ID 
join ACTEUR anim on  anim.ATR_ID = asn_atr_id
join theme on tme_id = ssn_tme_id
join ETAT_SESSION on esn_id = ssn_esn_id
join LIEU_SESSION on LSN_SSN_ID =ssn_id
join LIEU on LEU_ID = LSN_LEU_ID
where SSN_ESN_ID = 15
    and SSN_JOURNEE_ETUDE = 1 
    and LEU_NOM is not null
    and year(ssn_date_debut) = YEAR(GETDATE())

 group by SSN_ID, TME_ID, 
TME_LIBELLE,ssn_date_debut,ssn_date_fin,SSN_NB_JOURS,asn_ssn_id

 union

  select distinct SSN_ID, 
            TME_ID, 
            TME_LIBELLE, 
            convert(varchar,ssn_date_debut,103) as 'Debut',
            CONVERT (varchar,ssn_date_fin,103) as 'Fin',
            SSN_NB_JOURS,
            COUNT (atr_id) as 'Total'
from SESSION
left join INTERVENANT on ITV_SSN_ID = SSN_ID
left join ACTEUR on ITV_ATR_ID = ATR_ID
join theme on tme_id = ssn_tme_id
join ETAT_SESSION on esn_id = ssn_esn_id
join LIEU_SESSION on LSN_SSN_ID =ssn_id
join LIEU on LEU_ID = LSN_LEU_ID
where SSN_ESN_ID = 15
and SSN_JOURNEE_ETUDE = 1 
and LEU_NOM is not null
and year(ssn_date_debut) = YEAR(GETDATE())

 group by SSN_ID, TME_ID, 
TME_LIBELLE,ssn_date_debut,ssn_date_fin,SSN_NB_JOURS,ITV_SSN_ID

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Использовать как

select (выбрать отдельный (все столбцы, кроме последнего) из таблицы), (выбрать сумму (общее) из таблицы)

0 голосов
/ 21 февраля 2019

Подход на основе производного запроса для получения SUM для общего столбца:

SELECT SSN_ID, TIME_ID, TIME_LIBELLE, DEBUT, FIN, SSN_NB_JOURS, SUM(Total) as Total
FROM
(
-- Your original SELECT with UNION
SELECT .. FROM ..
UNION ALL
SELECT .. FROM ..
UNION ALL
SELECT .. FROM ..
) d
GROUP BY SSN_ID, TIME_id, TIME_LIBELLE, DEBUT, FIN, SSN_NB_JOURS

Такой способ должен быть допустимым синтаксисом для обоих: mysql и sql server

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...