J'ai 2 questions, elles sont presque identiques, elles renvoient le même nombre de colonnes.
Je souhaite créer une procédure stockée pour obtenir une seule table basée sur 2 dates et 1 paramètre. P> < pré> xxx pré>
chaque requête retourne p> autre requête p> je veux une seule table Comme ceci p> ou cette p> aide p> p> p> p> P>
4 Réponses :
Bienvenue à vous! Vous pouvez le faire avec une déclaration syndicale, mais vous aurez besoin de toutes les colonnes pour être le même nom. Je suggère d'ajouter une colonne "Type" pour différencier:
Les mettre avec l'Union puis les séparer avec une agrégation conditionnelle
select
Datepart(minute, created_at) as minuto,
avg(case when type = 's' then n end) as salida_1,
avg(case when type = 'e' then n end) as entrada_1
from
(
select 's' as type, created_at, id_linea, salida_1 as n from salida_a
union all
select 'e' as type, created_at, id_linea, entrada_1 as n from entrada_a
)
where
created_at between '27/01/2020 04:00:00' and '27/01/2020 05:00:00' and
id_linea = 6
group by
datepart(minute, created_at)
order by minuto
Oh merci beaucoup, ça marche si bien: O mais j'ai un problème lorsque vous utilisez "Isnull ()" Les colums, sauf "Minuto" entrent en blanc, je veux dire sans nom de colonne, "salida_1" "entrada_1":
Vous devrez montrer des données de table qui le reproduit; Je ne peux pas bien comprendre ce que tu veux dire
Une alternative à mon syndicat / AGG conditionnel, vous pouvez utiliser une jointure. Cela pourrait être plus facile à comprendre pour vous:
Prenez votre requête existante et tournez-les en CTE: P>
COALESCE(e.entrada_1, 0)
En supposant que les deux résultats ont des colonnes et des datates identiques, vous pouvez utiliser un syndicat tout. Par exemple, sélectionnez .... Union Tous Sélectionnez ....