Mon problème est le suivant, je voudrais que lorsque on lance la requête, on obtienne le résultat de tout le mois précédent ainsi que de tout le mois précédent de l'année passé. Par exemple, aujourd'hui 09/07/2019; si je lance ma requête, je devrais avoir les résultats de l’entièreté du mois de juin 2019 et juin 2018.
ma requête est
select Year(Date) as Year, Month(Date) as Month
,sum(MsgLogicalCount) as volume
,sum(MsgPhysicalCount) as Physical
from staging.InvDataCompany
where date >= '2019-05-01' and date < '2019-06-01'
and (rectype = 4 or rectype = 5) and subrectype = 1
group by Year(Date), Month(Date)
order by Year(Date), Month(Date)
Pourriez-vous m'aider, s'il vous plait?
D'avance, merci
Thierry
- Edité par ThierryCuvelier 9 juillet 2019 à 10:26:25
"NOW" ne fonctionne pas, j'ai dû utiliser "GETDATE"
Il bloque maintenant sur MOD. J'ai vu sur le net de le remplacer par % mais cela ne fonctionne toujours pas, "'MOD' is not a recognized built-in function name."
Pourrais tu me donner encore un petit coup de pouce, stp?
En TSQL, modulo est un opérateur (%), pas une fonction. La syntaxe est donc différente.
WHERE mois % 12 = 0
Après sans modulo, il y a :
select
Year(Date) as Year,
Month(Date) as Month,
sum(MsgLogicalCount) as volume,
sum(MsgPhysicalCount) as Physical
from staging.InvDataCompany
where
Year(date) >= Year(GETDATE())-1
and Month(Date) = Month(GETDATE())-1
and (
rectype = 4
or rectype = 5
)
and subrectype = 1
group by Year(Date), Month(Date)
order by Year(Date), Month(Date)
J'en rajoute une couche : quand on est en janvier N, il faut les mois de décembre N-1 et décembre N-2 (pas N et N-1).
Le bon code est donc :
WHEN YEAR(GETDATE)) - IF(MONTH(GETDATE())=1, 1, 0) - YEAR(Date) IN (0, 1)
AND (MONTH(GETDATE()) - MONTH(Date))) % 12 = 1
Ou mieux :
WHEN YEAR(GETDATE() - 1 MONTH) - YEAR(Date) IN (0, 1)
AND MONTH(GETDATE() - 1 MONTH) = MONTH(Date)
Query date casse tête
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Je suppose que ça se comprend ? Sinon n'hésite pas à demander des explications