0
votes

Obtenez plusieurs colonnes avec plusieurs membres entre les relevés de la clause WHERE dans SQL

Je veux obtenir une colonne pour chaque relevé, je dois maintenant le faire manuellement pour chaque déclaration pour obtenir le résultat, mais comment puis-je le faire à la fois? XXX

EDIT : Merci pour les réponses, ils travaillent. Cependant, la requête fonctionne très lentement. Est-ce en quelque sorte possible d'interroger quelque chose comme le suivant comme résultat? xxx

avec quelque chose comme ceci: xxx

Le résultat quelque chose comme ceci: xxx


3 commentaires

Vos dates de fin et de démarrage se chevauchent, 20180827 et 20180902 et 20180902 et 20180909 , est-ce correct? Voulez-vous une rangée avec ces chiffres comme colonnes ou une semaine de pairs d'une rangée?


Merci pour le commentaire, le chevauchement ne compte pas vraiment pour le moment. J'essaie d'obtenir une ligne pour chaque semaine.


Si vous voulez 1 ligne par semaine, le chevauchement est assez important. Sans cela, vous ne groupez simplement que le numéro de la semaine (ou similaire).


4 Réponses :


0
votes

Je veux avoir une colonne pour chaque relevé de l'époque

Vous semblez rechercher une agrégation conditionnelle: xxx


0 commentaires

0
votes

Vous voulez probablement Agrégation conditionnelle xxx


1 commentaires

Que puis-je faire pour le rendre plus rapide?



0
votes
SELECT 
case 
     when [EventDate] BETWEEN 20180820 AND 20180826 then count(ParcelEventID)
     else 0 
end as 20180820_20180826,
case
     when [EventDate] BETWEEN 20180827 AND 20180902 then count(ParcelEventID) 
     else 0 
end as 20180827_20180902,
case 
     when [EventDate] BETWEEN 20180902 AND 20180909 then count(ParcelEventID) 
     else 0
end as 20180827_20180902
FROM [Data].[CDB].[ParcelEvent]
WHERE [Depot] LIKE '05[12]%' AND [ParcelEventTypeID] = 09

0 commentaires

0
votes

Merci pour les réponses, elles fonctionnent. Cependant, la requête fonctionne très lentement. Est-ce en quelque sorte possible d'interroger quelque chose comme le suivant comme résultat? XXX

avec quelque chose comme ceci: xxx

puis avec le résultat quelque chose comme Ceci: xxx


1 commentaires

Vous pouvez caligner le premier jour d'une semaine, par exemple. Voir Stackoverflow.com / Questions / 7168874 / ... Vous pouvez également essayer d'améliorer les performances à l'aide d'une agrégation en deux étapes: prenez d'abord le compte par date dans une CTE et calculez la semaine et la somme de ces chefs de comptes sur le dessus.