Liczenie umów za miesiąc bieżący i poprzedni

0

Cześć
Potrzebuję napisać zapytanie które będzie automatycznie liczyć ilość umów za miesiąc bieżący i poprzedni. Zapytanie musi być tak napisane, że samo będzie agregować miesiąc aktualny i poprzedni. Zapytanie w sql serwer. Z góry dziękuję za pomoc.

1

No to dam ci hinta (bo nawet struktury tabel nie podałeś): Funkcję agregujące jak np Count, grupowanie i funkcje okienkowe jak np ta: https://www.sqlservertutorial.net/sql-server-window-functions/sql-server-lead-function/ - takie rzeczy się mogą przydać, aczkolwiek nie koniecznie wszystkie.

0

Zakładając 3 kolumny

screenshot-20220218142145.png

0

Co masz?

0

Czy ktoś próbował z funkcją getdate - interval?

0

Wystarczy warunek where i group by

select
    month(data),
    count(*)
from
    tabela
where 
    data between select DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) and getdate()
group by
  month(data)
0

@Panczo:

Dziękuję za odpowiedź, ale nie wchodzi zapytanie. Dostaje komunikat.

Msg 156, Level 15, State 1, Line 6
Incorrect syntax near the keyword 'SELECT'.
Msg 156, Level 15, State 1, Line 6
Incorrect syntax near the keyword 'AND'.

Kiedy usunę drugi select to wchodzi ale nie wiem czy to jest poprawne. Czy jest możliwość rozbicia tego na dwa osobne zapytania? W jednym będzie z tego miesiąca, a w drugim z poprzedniego miesiąca.

0

@Panczo: a czy mogę prosić Ciebie o pomoc w napisaniu tych dwóch zapytań? Pierwsze gdzie będzie liczyło ilość umów z miesiąca aktualnego, a drugie z miesiąca poprzedniego.

0

Pewnie bieżący miesięc to jest pierwszy dzień biezącego miesiąca i bieżąca data i to trzeba wstawić w between, z poprzednim jest inaczej bo to jest pierwszy poprzedniego miesiąca i ostatni porzedniego miesiąca.

Jak klikniesz w linki które dałem wcześniej to znajdziesz

0
SELECT
TYPE
,count(*) as Google_Ads_Automated
  FROM Tabela
  where  DateCreated between DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)) AND GETDATE() 
  GROUP BY Type

Niestety nie wchodzi mi za poprzedni miesiąc

0

Konstrukcja between jest prosta: podajsze zakres od kiedy do kiedy: between odkiedy and dokiedy
Czyli wg. zapytania pytasz o zakres od 2022-01-01 0000.000 do 2022-02-21 1559.970 no to nie bardzo pasuje do zakresu porzedniego miesiąca.

0

Tylko nie chodzi o wpisywanie dat na sztywno tylko żeby liczyło automatem

0

A gdzie tu masz wpisane na sztywno?

DateCreated between DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)) AND GETDATE()

1 użytkowników online, w tym zalogowanych: 0, gości: 1