J'ai une procédure stockée qui boucle les mois de l'exercice et comptabilise les éléments de chaque mois. Je sais pertinemment qu'il y a 176 items, mais quand je lance ça ça retourne un total de 182. J'ai essayé de supprimer une seconde de @EndDate, mais mon compte total était de 165. Donc je compte soit deux fois les items, soit sans compter tous. Quelqu'un peut-il aider avec ce que je fais mal ici? Voici une version allégée de ce que je fais:Problème avec la requête Sql Server utilisant BETWEEN dans lequel DATETIME
DECLARE @Date DATETIME
DECLARE @EndDate DATETIME
SELECT @Date = CAST((@Year - 1) as VARCHAR) + '-07-01'
SELECT @EndDate = DATEADD(Month, 1, @Date)
DECLARE @Count INT
SELECT @Count = 0
WHILE @Count < 12
BEGIN
SELECT
COUNT(yai.ID)
FROM
table_1 yai
INNER JOIN table_2 yat ON yai.ID = yat.ID
WHERE
(yat.Date_Received BETWEEN CONVERT(VARCHAR, @Date, 101) AND CONVERT(VARCHAR, @EndDate, 101)) AND
yai.Pro_Type = @Value AND yat.Type = 'PC'
SELECT @Count = @Count + 1
SELECT @Date = DATEADD(MONTH, 1, @Date)
SELECT @EndDate = DATEADD(MONTH, 1, @EndDate)
END
Quel est le type de yat.date_received? –
Ignorer le Convert avec le type 101, c'était juste quelque chose que j'ai essayé juste avant de poster ce code. Ce sont des champs datetime, et j'essaie de comparer à une valeur de date et d'heure – Jhorra