Die Anleitung zum JasperReport für den Anfänger mit SQL Server
1. Die Vorstellung
Das Dokument leitet dem Anfänger an, SQL zu lernen. Das Dokument basiert auf ...:
- SQL Server (2008 - 2020)
Die Inhalt fasst um:
- Die Sprache SQL
- Die Grammatik SQL (die grundlegende Grammatik, Standard für allen Datenbank)
- Die eigene Grammatik SQL von SQLServer.
Mehr sehen:
- SQL Tutorial for Beginners with MySQL
- SQL Tutorial for Beginners with Oracle
2. Das Tool zur Arbeit mit SQL Server
Hier benutze ich SQLServer Management Studio- Das ist ein eingebautes Tool nach der Installation von SQLServer. Sie können die Installationsanleitung von SQLServer in ...mehr sehen:
- Installieren Sie SQL Server Express 2014 unter Windows
- Install SQL Server Express 2012 on Windows
- Installieren Sie SQL Server Express 2008 unter Windows
3. Die Datenbank zum Lernen SQL (LearningSQL)
Das Dokument benutzt die Datenbank LearningSQL (die Version von SQLServer). Sie brauchen die Datenbank erstellen um hilfreich für das Lernen zu sein. (Es kostet Sie nur weniger als 5 Minuten um es zu erstellen).
Script bildet die Datenbank. Die Struktur des Datenbank kann in... gesehen werden:
Script bildet die Datenbank. Die Struktur des Datenbank kann in... gesehen werden:
4. Query
SQL Select
Das Statement Select ist das grundlegendste Statement in SQL. Es wird benutzt um die Daten in Tabellen abzufragen.
- PRODUCT_TYPE: Die Daten Tabelle von der Produktstypen (Service type of bank).
Das ist das Statement Datenabfragen in die Tabelle PRODUCT_TYPE
-- Query entire column of Product_Type table.
Select * From Product_Type;
-- The above statement and the following statement are equivalent.
-- Pty is alias (a alias of Product_Type table).
Select Pty.* From Product_Type Pty;
-- Query some columns.
Select Pty.Product_Type_Cd
,Pty.Name
From Product_Type Pty;
Das Ergebnis vom Abfragen:
Die Daten in die Tabelle EMPLOYEE abfragen:
-- Query 4 columns on the Employee table
-- Using Emp as alias for Employee
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Dept_Id
From Employee Emp;
Das Ergebnis vom Abfragen:
Alias für die Spalte erstellen:
-- Using Convert(Varchar, <intvalue>) to convert int to Varchar (Function of SQL Server)
-- Using + operation to concatenate two strings together.
-- We have a new column, use 'as' to define column name for this column.
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Dept_Id
,'EMP' + Convert(Varchar,Emp.Emp_Id) As Emp_No2 -- Cột mới
From Employee Emp;
-- Maybe not need 'as' in the definition Alias column
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Dept_Id
,'EMP' + Convert(varchar,Emp.Emp_Id ) Emp_No2 -- New column
From Employee Emp;
Das Ergebnis vom Abfragen:
SQL Distinct
Das Statement distinct wird mit Select benutzt, um die Daten zu wählen (select) und die wiederholenden Daten auszulassen. Die Syntax ist:
Select distinct <column1>, <column2> ....
Das Beispiel sehen:
-- Query Product table.
Select Pro.Product_Cd
,Pro.Name
,Pro.Product_Type_Cd
From Product Pro;
-- Query Product_Type in Product table.
Select Pro.Product_Type_Cd from Product Pro;
-- Distinct need to use to remove the duplicates.
Select Distinct Pro.Product_Type_Cd from Product Pro;
Das Ergebnis vom Laufen der Statement oben:
SQL Where
Where ist das Statement für die Begrenzung der Suchenbereich. Z.B Sie möchten die Dienstleistungsprodukten mit dem Typ "Privat- und Geschäftsdarlehen" suchen.
- Product_Type_Cd = 'LOAN'.
-- Querying the Product table to find the type of products:
-- "Individual and Business Loans".
-- Corresponding column: Product_Type_Cd = 'LOAN'.
Select * From Product Pro Where Pro.Product_Type_Cd = 'LOAN';
Das Ergebnis vom Abfragen:
Ein anderes Beispiel bennutzt where und die beigefügten Bedingungen.
SQL And Or
And und Or sind 2 Operator in where:
Zum Beispiel Sie möchten die Liste der Arbeitnehmer, deren Name mit 'S' beginnen und zur Operationsabteilung gehören
-- Query the employee whose first name starts with S.
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Dept_Id
From Employee Emp
Where Emp.First_Name Like 'S%';
-- Query the employee whose first name starts with S.
-- and work in Operation department. Dept_Id = 1.
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Dept_Id
From Employee Emp
Where Emp.First_Name Like 'S%'
And Emp.Dept_Id = 1;
Das Ergebnis des Laufen der Abfragen
Zum Beispiel:
-- Find the employees whose first name starts with S or P.
-- and work in Operation department. Dept_Id = 1.
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Dept_Id
From Employee Emp
Where (Emp.First_Name Like 'S%' Or Emp.First_Name Like 'P%')
And Emp.Dept_Id = 1;
Das Ergebnis vom Abfragen
SQL IN
Das Statement IN in where wird in die Situation der Suchen nach einer Wert in einer bestimmten Menge.
-- This command searches the employee named
-- Susan or Paula or Helen.
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Dept_Id
From Employee Emp
Where Emp.First_Name In ('Susan'
,'Paula'
,'Helen');
Das Ergebnis vom Laufen des Statement:
SQL Between
-- Find employees, with Emp_Id between 5 and 10.
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Start_Date
From Employee Emp
Where (Emp.Emp_Id Between 5 And 10);
-- The statement above is equivalent to:
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Start_Date
From Employee Emp
Where Emp.Emp_Id >= 5
And Emp.Emp_Id <= 10;
Query Results:
Das Statement BETWEEN wird auch für die Begrenzung der Zeit benutzt. Z.B Die Arbeitnehmer suchen, die in den Zeitraum von ... zu arbeiten beginnen:
- 03-05-2002 ==> 09-08-2002 (dd-MM-yyyy)
-- This statement helps find employees who have begun working for a period of time
-- specify it in where statement.
-- For example, 03-05-2002 ==> 09-08-2002 (Format: dd-MM-yyyy)
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Start_Date
, -- Convert(Varchar, <Date>, 105) Function convert Date to varchar Varchar with DD-MM-YYYY format
-- This is function of SQL Server (It may not exist in other DB).
Convert(Varchar, Emp.Start_Date
,105) Start_Date_Vn
From Employee Emp
Where
-- Convert(Datetime, <Varchar>, 105) Function convert text with DD-MM-YYYY format to Datetime
-- (This is function of SQLServer, (It may not exist in other DB))
( --
Emp.Start_Date Between Convert(Datetime, '03-05-2002'
,105) And
Convert(Datetime,'09-08-2002'
,105) --
);
Query Result:
SQL Wildcard
Es gibt 2 besondere Zeichen in SQL:
- Das Zeichen %
- Das Zeichen _
- % bezeichnet 0, 1 oder viele irgenden Zeichen.
- _ bezeichnet ein bestimmtes Zeichen.
-- Find Customers whose FED_ID is formatted:
-- The initial part is random, following by -, then two any characters, then -, and the last part is any.
-- Use two dashes (_) for illustrating two characters.
-- (Each dash (_) is a unique character).
Select Cus.Cust_Id
,Cus.Fed_Id
,Cus.Address
From Customer Cus
where cus.fed_id like '%-__-%';
Query Results:
SQL Like
Sie haben an dieses Statement in die Beispiele oben gewöhnt.
SQL Order By
Das query von Daten zeigt eine Menge der Ergebnisse, aber sie arrangiert nicht so wie gewünscht. Benutzen Sie Order by um die zurückgegebenen Ergebnisse zu gliedern.
-- Syntax:
SELECT "column_name"
FROM "table_name"
[WHERE "condition"]
ORDER BY "column_name1" [ASC, DESC], "column_name2" [ASC, DESC];
-- Note:
-- ASC: ascending (default)
-- DESC: descending order..
Zum Beispiel:
-- Arrange Product_Type_Cd in ascending order
-- Next, arrange Name in ascending order, too.
Select Pro.Product_Cd
,Pro.Product_Type_Cd
,Pro.Name
From Product Pro
Order By Pro.Product_Type_Cd Asc
,Pro.Name Asc;
-- In Order BY, ASC is defaulted.
-- Thus, it is unnecessary to write ASC.
Select Pro.Product_Cd
,Pro.Product_Type_Cd
,Pro.Name
From Product Pro
Order By Pro.Product_Type_Cd
,Pro.Name;
-- Arrange Product_Type_Cd in descending order
-- Next, arrange Name in ascending order
Select Pro.Product_Cd
,Pro.Product_Type_Cd
,Pro.Name
From Product Pro
Order By Pro.Product_Type_Cd Desc
,Pro.Name Asc;
Query Results:
Order By steht immer hinter where.
-- Find the employees whose first name starts with S.
-- Sort descending by start date of work.
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Start_Date
From Employee Emp
Where Emp.First_Name Like 'S%'
Order By Emp.Start_Date Desc;
Query Results:
OR:
-- Apply the order of column to Order by clause.
-- First_Name is the second column in Select clause.
-- Be able to use Order by 2 in lieu of Order by First_Name.
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Start_Date
From Employee Emp
Order By 2 Desc;
SQL Group By
Zuerst brauchen wir verstehen, was die aggregierte Funktionen (Aggregate Functions) sind:
- Sum: Die Funktion gibt die Summe von allen Werten zurück
- Avg: Die Funktionn gibt die Durchschnitt der Werten zurück
- Count: Die Funktion gibt die Anzahl der Stücke
- Min: Die Funktion findet die minimale Wert
- Max: Die Funktion findet die maximale Wert
-- Query Account table.
Select Acc.Account_Id
,Acc.Product_Cd
,Acc.Avail_Balance
,Acc.Pending_Balance
From Account Acc;
Die Frage ist: Sie möchten die Total des Geld ins Konto kennen,das jedem verschiedenen Dienstleistungstyp (Product_Cd) entspricht. Das heißt, Sie sollen in Product_Cd gruppieren.
Select Acc.Product_Cd
,Count(Acc.Product_Cd) As Count_Acc
,Sum(Acc.Avail_Balance) As Sum_Avail_Balance
,Avg(Acc.Avail_Balance) As Avg_Avail_Balance
From Account Acc
Group By Acc.Product_Cd;
Results:
Deshalb haben Sie eine Bewertung:
- Es gibt 4 Kontos, die an die Dienstleistung "Spareinlagen" (SAV) mit dem Betrag von 1855.76 teilnehmen und jedes Konto hat einen durchschnittlichen Betrag von 463.94.
- ...
SQL Having
Der Satz HAVING erlaubt Sie bei der Bestimmung der Bedingungen, die filtern, welche Gruppe in die letzten Ergebnisse auftreten.
Der Satz WHERE setzen die Bedingungen für die gewählten Spalten, inzwischen setzt der Klause HAVING die Bedingungen für die Gruppen, die durch den Klause GROUP BY erstellt werden.
Der Satz WHERE setzen die Bedingungen für die gewählten Spalten, inzwischen setzt der Klause HAVING die Bedingungen für die Gruppen, die durch den Klause GROUP BY erstellt werden.
Angenommen, Sie möchten die Dienstleistungstypen (Product_Cd) in die Tabelle Account gruppieren und nur die Typen zeigen, die mehr als ( > 3) Teilnehmer haben.
Select Acc.Product_Cd
,Count(Acc.Product_Cd) As Count_Acc
,Sum(Acc.Avail_Balance) As Sum_Avail_Balance
,Avg(Acc.Avail_Balance) As Avg_Avail_Balance
From Account Acc
Group By Acc.Product_Cd
Having Count(Acc.Product_Cd) > 3;
Query Results:
Der Unterschied von Where & Having
Sie brauchen Where und Having in einem Statement unterscheiden.
- Where ist ein Statement für den Datenfilter vor der Gruppierung (Group)
- Having ist ein Statement für den Datenfilter nach der Gruppierung (Group)
Falls Sie die allgemeinen Informationen einer Bank-Filiale (die Tabelle BRANCH) haben möchten. Sie können where benutzen um die Daten vor der Gruppierung (group) zu filtern.
Select Acc.Product_Cd
,Count(Acc.Product_Cd) As Count_Acc
,Sum(Acc.Avail_Balance) As Sum_Avail_Balance
,Avg(Acc.Avail_Balance) As Avg_Avail_Balance
From Account Acc
-- Using WHERE to filter data before group
Where Acc.Open_Branch_Id = 1
Group By Acc.Product_Cd
-- Using HAVING to filter data after group
Having Count(Acc.Product_Cd) > 1;
Query Results:
5. Insert
SQL Insert Into
Die Syntax:
-- Syntax of Insert Into:
INSERT INTO "table_name" ("column1", "column2", ...)
VALUES ("value1", "value2", ...);
Zum Beispiel: Sie fügen eine Kundentransaktion in die Tabelle ACC_TRANSACTION ein:
-- Insert a record in Acc_Transaction table
-- numeric value is automatically generated for Txn_ID.
-- Current_Timestamp is function of SQL Server, return system datetime
-- Current_Timestamp : System datetime
Insert Into Acc_Transaction
(Amount
,Funds_Avail_Date
,Txn_Date
,Txn_Type_Cd
,Account_Id
,Execution_Branch_Id
,Teller_Emp_Id)
Values
(100 -- Amount
,Current_Timestamp -- Funds_Avail_Date
,Current_Timestamp -- Txn_Date
,'CDT' -- Txn_Type_Cd
,2 -- Account_Id
,Null -- Execution_Branch_Id
,Null -- Teller_Emp_Id
);
SQL Insert Into Select
Sie können den Statement Select benutzen um die Daten für die Einfügung anzubieten. Mit dem Statement Insert Into ... Select.
-- Syntax of INSERT INTO .. SELECT
INSERT INTO "table1" ("column1", "column2", ...)
SELECT "column3", "column4", ...
FROM "table2";
Zum Beispiel:
-- Insert multi record in Acc_Transaction table
-- Use Select statement to provide data.
-- numeric value is automatically generated for Txn_ID.
Insert Into Acc_Transaction
( Txn_Date
,Account_Id
,Txn_Type_Cd
,Amount
,Funds_Avail_Date)
Select Acc.Open_Date -- Txn_Date
,Acc.Account_Id -- Account_Id
,'CDT' -- Txn_Type_Cd
,200 -- Amount
,Acc.Open_Date -- Funds_Avail_Date
From Account Acc
Where Acc.Product_Cd = 'CD';
6. SQL Update
-- Syntax of Update:
UPDATE "table_name"
SET "column_1" = "new value 1", "column_2"= "new value 2"
WHERE "condition";
Zum Beispiel: Sie möchten den Betrag ins Konto des Kunden mit CUST_ID = 1 um 2% erhöhen.
Das Statement Update:
-- Update, increase the amount of money in customers' account with CUST_ID = 1 by 2%.
Update Account
Set Avail_Balance = Avail_Balance + 2 * Avail_Balance / 100
,Pending_Balance = Pending_Balance + 2 * Pending_Balance / 100
Where Cust_Id = 1;
Wiederabfragen nach dem Update.
7. SQL Delete
Die Syntax erlöscht die Daten in die Tabelle.
-- Delete two records in the Acc_Transaction table
DELETE FROM "table_name"
WHERE "condition";
-- Delete two records in the Acc_Transaction table
Delete From Acc_Transaction
Where Txn_Id In (25
,26);
8. SQL Functions
SQL Count
Count() ist eine Funktion, die die Anzahl der Linie in den Satz Query. Oft wird es mit Group by benutzt.
-- Count the number of rows in the Account table
Select Count(Acc.Account_Id) As Count_Acc From Account Acc;
Die Anzahl der Kontos, die die Transaktion mit der Bank haben, zählen (die Tabelle Acc_Transaction)
-- Count the number of accounts having transaction with the bank
Select Count(distinct txn.Account_id) as Distinct_Acc From Acc_Transaction txn;
Group by
Ein Kunde kann viele Kontos öffnen. Jedes Konto entspricht einer Bankprodukt (Dienstleistung).
Sie möchten die Kunden (CUST_ID) und ihre Kontos aufzählen
-- Count the number of accounts opened for each customer....
Select Acc.Cust_Id
,Count(Acc.Account_Id) As Count_Acc
From Account Acc
Group By Acc.Cust_Id;
SQL Sum
Sum() ist die Funktion , die die Summe einer numerischen Spalte zurückgibt.
-- Syntax:
SELECT SUM("column_name")
FROM "table_name";
Zum Beispiel:
-- Find the sum of the money in customers' accounts with CUST_ID = = 1
Select Sum(Acc.Avail_Balance) As Sum_Avail_Balance
From Account Acc Where Acc.Cust_Id = 1;
-- Use Group by.
-- Find the sum of the money in accounts owned by each customer.
Select Acc.Cust_Id
,Sum(Acc.Avail_Balance) As Sum_Avail_Balance
From Account Acc
Group By Acc.Cust_Id;
SQL AVG
Die Funktion AVG() gibt die Durchschnitt der numerischen Spalte zurück.
-- Syntax:
SELECT AVG("column_name")
FROM "table_name";
Example
-- Find the average of money equivalent to each type of deposit.
Select Avg(Acc.Avail_Balance) As Avg_Avail_Balance
From Account Acc
Where Acc.Product_Cd = 'SAV';
-- Use Group by.
-- A customer can own one or more account.
-- Find the average of money in each account owned by each customer
-- (In the bank with Branch_ID = 1)
Select Acc.Cust_Id
,Avg(Acc.Avail_Balance) As Avg_Avail_Balance
From Account Acc
Where Acc.Open_Branch_Id = 1
Group By Acc.Cust_Id;
SQL MIN
Min ist die Funktion, die die minimale Wert in die numerische Spalte findet.
-- Syntax:
SELECT MIN ("column_name")
FROM "table_name";
Example:
-- Find the minimum amount of deposit.
Select Min(Acc.Avail_Balance) As Min_Avail_Balance
From Account Acc
Where Acc.Product_Cd = 'SAV';
-- Use Group by.
-- A customer can own one or more account.
-- Accounts can be opened in different branches.
-- Find the amount in the account, minimum for each branch
Select Acc.Open_Branch_Id
,Min(Acc.Avail_Balance) As Min_Avail_Balance
From Account Acc
Group By Acc.Open_Branch_Id;
SQL MAX
MAX() ist die Funktion, die die maximale Wert in einer numerischen Spalte findet. Die Benutzung ist so gleich wie MIN, Sie können die Beispiele in MIN referieren.
-- Syntax:
SELECT MAX("column_name")
FROM "table_name";
9. SQL Join
Zum Beispiel: Sie sehen die Information einer Arbeitnehmer in die Tabelle EMPLOYEE. Sie können den Arbeitnehmer finden wenn Sie ID der Abteilung des Arbeitnehmer kennen. Aber das ist eine bedeutungslos. Um den Name der Abteilung zu kennen, müssen Sie in die Tabelle DEPARTMENT nachschlagen. Die Verbindung von 2 Tabelle zur Schaffung der vollen Information wird JOIN genannt.
Es gibt 4 Maßnahmen zum Join 2 Tabelle :
- INNER JOIN (JOIN)
- LEFT OUTER JOIN (LEFT JOIN)
- RIGHT OUTER JOIN (RIGHT JOIN)
- FULL OUTER JOIN (OUTER JOIN)
- CROSS JOIN
INNER JOIN (or JOIN)
Das Schlüsselwort INNER JOIN wählt alle Linie vom 2 Tabelle solange es gibt die Datenzusammenpassung zwischen die Spalten in 2 Tabelle .
Die Syntax:
-- Syntax:
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
-- INNER JOIN can replaced by JOIN
-- Same Meaning, and result.
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;
Example:
-- INNER JOIN 2 table: EMPLOYEE and DEPARTMENT.
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Dept_Id
,Dep.Name Dept_Name
From Employee Emp
Inner Join Department Dep
On Emp.Dept_Id = Dep.Dept_Id
Order By Emp.Emp_Id;
Die eigene Syntax von SQLServer:
-- Other SQL Server syntax to join two tables:
Select Emp.Emp_Id
,Emp.First_Name
,Emp.Last_Name
,Emp.Dept_Id
,Dep.Name Dept_Name
From Employee Emp
,Department Dep
Where Emp.Dept_Id = Dep.Dept_Id
Order By Emp.Emp_Id;
LEFT OUTER JOIN (or LEFT JOIN)
Das Sschlüsselwort LEFT OUTER JOIN gibt alle Linien (rows) von der linken Tabelle (table1), mit der in die rechten Tabelle (table2) entsprechenden Linie zurück. Die Daten NULL in die Tabelle 2 akzeptieren wenn es keine Zusammenpassung gibt.
Die folgende Illustration sehen:
Zum Beispiel:
-- Customer LEFT OUTER JOIN Officer
-- LEFT OUTER JOIN Can be replaced by LEFT JOIN (meaning, and the result is the same)
Select Cus.Cust_Id
,Cus.Fed_Id
,Cus.State
,Ofc.Cust_Id As Ofc_Cust_Id
,Ofc.Officer_Id
,Ofc.Start_Date
,Ofc.Title
From Customer Cus -- Table1
Left Outer Join Officer Ofc -- Table2
On Cus.Cust_Id = Ofc.Cust_Id;
Das Ergebnis:
RIGHT OUTER JOIN (or RIGHT JOIN)
RIGHT OUTER JOIN ist ziemlich gleich wie LEFT OUTER JOIN:
FULL OUTER JOIN (or OUTER JOIN)
FULL OUTER JOIN ist die Komibination zwischen LEFT OUTER JOIN und RIGHT OUTER JOIN
-- Syntax: (FULL OUTER JOIN)
-- Or: FULL JOIN
SELECT columns
FROM table1
FULL [OUTER] JOIN table2
ON table1.column = table2.column;
10. Subquery
Im SQLServer ist subquery eine Abfrage innerhalb einer Abfrage. Sie können die Subabfragen in Ihrem Statement SQL erstellen. Die Subabfragen können in dem Klausel WHERE, FROM, oder SELECT liegen.
Subquery in the Where clause
Sehr oft werden die subquery in dem Klausel WHERE gefunden. Die Subabfragen werden die eingenisteten Subabfragen genannt .
Select Acc.Account_Id
,Acc.Open_Date
,Acc.Product_Cd
,Acc.Avail_Balance
From Account Acc
Where Acc.Cust_Id In
(Select Cus.Cust_Id From Customer Cus Where Cus.Cust_Type_Cd = 'B')
Subquery in the From clause
Ein Abfragen kann im Klausel FROM auch gefunden. Sie werden inline views genannt.
Select Cus.Cust_Id
,Cus.Address
,Cus.Fed_Id
,Acc2.Sum_Avail_Balance
From Customer Cus
, -- Define a inline view.
(Select Acc.Cust_Id
,Sum(Acc.Avail_Balance) As Sum_Avail_Balance
From Account Acc
Group By Acc.Cust_Id) Acc2
Where Cus.Cust_Id = Acc2.Cust_Id;
Subquery in the Select clause
Ein subquery kann in den Klausel SELECT gefunden werden.
Select Cus.Cust_Id
,Cus.Address
,Cus.Fed_Id
,(Select Sum(Acc.Avail_Balance)
From Account Acc
Where Acc.Cust_Id = Cus.Cust_Id) As Sum_Avail_Balance
From Customer Cus;
Der Trick bei der Stellung eines Unterabfragen (subquery) im Klausel select besteht darin, dass subquery die einzige Wert zurückgeben muss. Das ist der Grund, warum eine Aggregatefunktion wie die Funktion SUM, COUNT, MIN, oder MAX in subquery oft benutzt wird.
No ADS
Anleitungen SQL Server Datenbank
- Installieren Sie SQL Server Express 2008 unter Windows
- Installieren Sie SQL Server Express 2014 unter Windows
- Beispiel SQL Server Datenbank zum Lernen von SQL
- Die Anleitung zu SQL Server Transact-SQL
- Die Anleitung zum JasperReport für den Anfänger mit SQL Server
Show More