Zestaw rekordów: uzyskiwanie sum i innych wyników agregacji (ODBC)
Uwaga
Kreator klienta MFC ODBC nie jest dostępny w programie Visual Studio 2019 i nowszych wersjach. Nadal można ręcznie utworzyć użytkownika.
Ten temat dotyczy klas MFC ODBC.
W tym temacie opisano sposób uzyskiwania zagregowanych wyników przy użyciu następujących słów kluczowych SQL :
FUNKCJA SUM oblicza sumę wartości w kolumnie z typem danych liczbowych.
FUNKCJA MIN wyodrębnia najmniejszą wartość w kolumnie z typem danych liczbowych.
FUNKCJA MAX wyodrębnia największą wartość w kolumnie z typem danych liczbowych.
AVG oblicza średnią wartość wszystkich wartości w kolumnie z typem danych liczbowych.
COUNT zlicza liczbę rekordów w kolumnie dowolnego typu danych.
Te funkcje SQL służą do uzyskiwania informacji statystycznych dotyczących rekordów w źródle danych, a nie wyodrębniania rekordów ze źródła danych. Utworzony zestaw rekordów zwykle składa się z jednego rekordu (jeśli wszystkie kolumny są agregowane), który zawiera wartość. (Jeśli użyto rekordu , może istnieć więcej niż jeden rekordGROUP BY , klauzula.) Ta wartość jest wynikiem obliczeń lub wyodrębniania wykonywanych przez funkcję SQL.
Napiwek
Aby dodać klauzulę SQL GROUP BY (i ewentualnie klauzulę HAVING ) do instrukcji SQL, dołącz ją na końcu m_strFilter
. Na przykład:
m_strFilter = "sales > 10 GROUP BY SALESPERSON_ID";
Liczbę rekordów używanych do uzyskiwania zagregowanych wyników można ograniczyć, filtrując i sortując kolumny.
Uwaga
Niektóre operatory agregacji zwracają inny typ danych od kolumn, dla których są agregowane.
Funkcja SUM i AVG mogą zwracać następny większy typ danych (na przykład wywołanie funkcji z zwracanymi wartościami
int
LONG lubdouble
).Funkcja COUNT zwykle zwraca wartość LONG niezależnie od typu kolumny docelowej.
Funkcja MAX i MIN zwracają ten sam typ danych co kolumny, które obliczają.
Na przykład kreator Dodaj klasę tworzy
long
m_lSales
w celu uwzględnienia kolumny Sales (Sprzedaż), ale należy zastąpić elementemdouble m_dblSumSales
członkowskim danych, aby uwzględnić zagregowany wynik. Zobacz poniższy przykład.
Aby uzyskać zagregowany wynik dla zestawu rekordów
Utwórz zestaw rekordów zgodnie z opisem w temacie Dodawanie odbiorcy MFC ODBC zawierającego kolumny, z których chcesz uzyskać zagregowane wyniki.
Zmodyfikuj funkcję DoFieldExchange dla zestawu rekordów. Zastąp ciąg reprezentujący nazwę kolumny (drugi argument wywołań funkcji RFX ) ciągiem reprezentującym funkcję agregacji w kolumnie. Na przykład zastąp:
RFX_Long(pFX, "Sales", m_lSales);
tym:
RFX_Double(pFX, "Sum(Sales)", m_dblSumSales)
Otwórz zestaw rekordów. Wynik operacji agregacji jest pozostawiony w pliku
m_dblSumSales
.
Uwaga
Kreator faktycznie przypisuje nazwy składowych danych bez węgierskich prefiksów. Na przykład kreator utworzy m_Sales
kolumnę Sales zamiast m_lSales
nazwy użytej wcześniej na ilustracji.
Jeśli używasz klasy CRecordView do wyświetlania danych, musisz zmienić wywołanie funkcji DDX, aby wyświetlić nową wartość składową danych; w tym przypadku zmiana jej z:
DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_lSales, m_pSet);
Do:
DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_dblSumSales, m_pSet);
Zobacz też
Zestaw rekordów (ODBC)
Zestaw rekordów: jak zestawy rekordów pobierają rekordy (ODBC)