Die Anleitung zum JasperReport für den Anfänger mit SQL Server

View more Tutorials:

1- Introduction

Das Dokument leitet dem Anfänger an,  SQL zu lernen. Das Dokument basiert auf ...:
  • SQL Server (2008 - 2014)

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:
  • TODO Link!
  • TODO Link!

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:
  • TODO Link!

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:

4- Query

4.1- 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:

4.2- 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:

4.3- 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'.
Sie sollen in die Tabelle  PRODUCT , in die Stellen von  Product_Type_Cd= 'LOAN' abfragen.
-- 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.

4.4- 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

4.5- 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:

4.6- 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:

4.7- SQL Wildcard

Es gibt 2 besondere Zeichen in SQL:
  1. Das Zeichen %
  2. Das Zeichen _
Die Bedeutung:
  • % bezeichnet 0, 1 oder viele irgenden Zeichen.
  • _ bezeichnet ein bestimmtes Zeichen.
Diese 2 Zeichen werden oft in die Bedingung  LIKE.
-- 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:

4.8- SQL Like

Sie haben an dieses Statement in die Beispiele oben gewöhnt.

4.9- 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;

4.10- 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
Das sind die einigen üblichen aggregierten Funktionen ( Aggregate). Sie können an das Statement Group by teilnehmen
-- 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.
  • ...

4.11- 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.
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

5.1- 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
   );

5.2- 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

8.1- 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;

Die Benutzung von 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;

8.2- 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;

8.3- 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;

8.4- 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;

8.5- 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 D EPARTMENT 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

9.1- 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;

9.2- 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:

9.3- RIGHT OUTER JOIN (or RIGHT JOIN)

RIGHT OUTER JOIN ist ziemlich gleich wie  LEFT OUTER JOIN:

9.4- 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  WHEREFROM, oder  SELECT liegen.

10.1- 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')

10.2- 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;

10.3- 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.

11- Die Programmierung von SQL Server Transact-SQL

Sie können die Programmierungssprache  Transact-SQL mit  SQL Server bei ... referieren: 

View more Tutorials: