it-swarm.com.de

Groß- / Kleinschreibung in Select-Anweisung

Ich habe eine SQL-Anweisung, die ein CASE von SELECT enthält, und ich kann es einfach nicht richtig verstehen. Können Sie mir ein Beispiel für CASE zeigen, in dem die Fälle die Bedingungen und die Ergebnisse der Fälle sind? Zum Beispiel:

     Select xxx, yyy
     case : desc case when bbb then 'blackberry';
     when sss then 'samsung';
     end 
     from (select ???? .....

wo die Ergebnisse zeigen

 name                         age       handphone
xxx1                         yyy1      blackberry
xxx2                         yyy2      blackberry
135
fadzli feizal

Der MSDN ist eine gute Referenz für diese Art von Fragen in Bezug auf Syntax und Verwendung. Dies befindet sich auf der Seite Transact SQL Reference - CASE.

http://msdn.Microsoft.com/en-us/library/ms181765.aspx

USE AdventureWorks2012;
GO
SELECT   ProductNumber, Name, "Price Range" = 
  CASE 
     WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
     WHEN ListPrice < 50 THEN 'Under $50'
     WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
     WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
     ELSE 'Over $1000'
  END
FROM Production.Product
ORDER BY ProductNumber ;
GO

Eine andere gute Site, die Sie überprüfen möchten, wenn Sie SQL Server verwenden, ist SQL Server Central . Auf diese Weise stehen eine Vielzahl von Ressourcen für jeden Bereich von SQL Server zur Verfügung, den Sie erlernen möchten.

185
NuNn DaDdY

Ich denke, das könnte hilfreich für Sie sein.

Verwenden einer SELECT-Anweisung mit einem einfachen CASE-Ausdruck

Innerhalb einer SELECT -Anweisung ermöglicht ein einfacher CASE -Ausdruck nur eine Gleichheitsprüfung. Es werden keine weiteren Vergleiche angestellt. Im folgenden Beispiel wird der Ausdruck CASE verwendet, um die Anzeige der Produktlinienkategorien zu ändern und sie verständlicher zu machen.

USE AdventureWorks2012;
GO
SELECT   ProductNumber, Category =
      CASE ProductLine
         WHEN 'R' THEN 'Road'
         WHEN 'M' THEN 'Mountain'
         WHEN 'T' THEN 'Touring'
         WHEN 'S' THEN 'Other sale items'
         ELSE 'Not for sale'
      END,
   Name
FROM Production.Product
ORDER BY ProductNumber;
GO

Verwenden einer SELECT-Anweisung mit einem gesuchten CASE-Ausdruck

In einer SELECT -Anweisung ermöglicht der gesuchte CASE -Ausdruck das Ersetzen von Werten in der Ergebnismenge basierend auf Vergleichswerten. Im folgenden Beispiel wird der Listenpreis als Textkommentar basierend auf der Preisspanne für ein Produkt angezeigt.

USE AdventureWorks2012;
GO
SELECT   ProductNumber, Name, "Price Range" = 
      CASE 
         WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
         WHEN ListPrice < 50 THEN 'Under $50'
         WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
         WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
         ELSE 'Over $1000'
      END
FROM Production.Product
ORDER BY ProductNumber ;
GO

Verwenden von CASE in einer ORDER BY -Klausel

In den folgenden Beispielen wird der Ausdruck CASE in einer ORDER BY -Klausel verwendet, um die Sortierreihenfolge der Zeilen basierend auf einem bestimmten Spaltenwert zu bestimmen. Im ersten Beispiel wird der Wert in der Spalte SalariedFlag der Tabelle HumanResources.Employee ausgewertet. Mitarbeiter, für die SalariedFlag auf 1 festgelegt ist, werden von BusinessEntityID in absteigender Reihenfolge zurückgegeben. Mitarbeiter, für die SalariedFlag auf 0 festgelegt ist, werden von BusinessEntityID in aufsteigender Reihenfolge zurückgegeben. Im zweiten Beispiel wird die Ergebnismenge nach der Spalte TerritoryName geordnet, wenn die Spalte CountryRegionName den Wert 'United States' hat, und nach CountryRegionName für alle anderen Zeilen.

SELECT BusinessEntityID, SalariedFlag
FROM HumanResources.Employee
ORDER BY CASE SalariedFlag WHEN 1 THEN BusinessEntityID END DESC
        ,CASE WHEN SalariedFlag = 0 THEN BusinessEntityID END;
GO


SELECT BusinessEntityID, LastName, TerritoryName, CountryRegionName
FROM Sales.vSalesPerson
WHERE TerritoryName IS NOT NULL
ORDER BY CASE CountryRegionName WHEN 'United States' THEN TerritoryName
         ELSE CountryRegionName END;

Verwenden von CASE in einer UPDATE -Anweisung

Im folgenden Beispiel wird der Ausdruck CASE in einer UPDATE -Anweisung verwendet, um den Wert zu bestimmen, der für die Spalte VacationHours für Mitarbeiter mit SalariedFlag auf 0 festgelegt ist. Wenn 10 Stunden von VacationHours abgezogen werden, ergibt sich ein negativer Wert. VacationHours wird um 40 Stunden erhöht; Andernfalls wird VacationHours um 20 Stunden erhöht. Die OUTPUT -Klausel wird verwendet, um die Werte vor und nach dem Urlaub anzuzeigen.

USE AdventureWorks2012;
GO
UPDATE HumanResources.Employee
SET VacationHours = 
    ( CASE
         WHEN ((VacationHours - 10.00) < 0) THEN VacationHours + 40
         ELSE (VacationHours + 20.00)
       END
    )
OUTPUT Deleted.BusinessEntityID, Deleted.VacationHours AS BeforeValue, 
       Inserted.VacationHours AS AfterValue
WHERE SalariedFlag = 0; 

Verwenden von CASE in einer HAVING -Klausel

Im folgenden Beispiel wird der Ausdruck CASE in einer HAVING -Klausel verwendet, um die von der SELECT -Anweisung zurückgegebenen Zeilen einzuschränken. Die Anweisung gibt den maximalen Stundensatz für jede Berufsbezeichnung in der Tabelle HumanResources.Employee zurück. Die HAVING -Klausel beschränkt die Titel auf diejenigen, die von Männern mit einem Höchstlohn von mehr als 40 Dollar oder von Frauen mit einem Höchstlohn von mehr als 42 Dollar gehalten werden.

USE AdventureWorks2012;
GO
SELECT JobTitle, MAX(ph1.Rate)AS MaximumRate
FROM HumanResources.Employee AS e
JOIN HumanResources.EmployeePayHistory AS ph1 ON e.BusinessEntityID = ph1.BusinessEntityID
GROUP BY JobTitle
HAVING (MAX(CASE WHEN Gender = 'M' 
        THEN ph1.Rate 
        ELSE NULL END) > 40.00
     OR MAX(CASE WHEN Gender  = 'F' 
        THEN ph1.Rate  
        ELSE NULL END) > 42.00)
ORDER BY MaximumRate DESC;

Weitere Details zu diesem Beispiel finden Sie unter source .

Besuchen Sie auch hier und hier für einige Beispiele mit detaillierten Angaben.

76
Sabir Al Fateh

sie können auch verwenden:

SELECT CASE
         WHEN upper(t.name) like 'P%' THEN
          'productive'
         WHEN upper(t.name) like 'T%' THEN
          'test'
         WHEN upper(t.name) like 'D%' THEN
          'development'
         ELSE
          'unknown'
       END as type
FROM table t
12
user5035983