Allgemeine Tabellenausdrücke sind nur an drei Stellen zulässig, auch wenn sie überall im Hauptteil der Abfrage oder in Unterabfragen referenziert werden können.
Oberste SELECT-Anweisung Allgemeine Tabellenausdrücke sind innerhalb von SELECT-Anweisungen der obersten Stufe zulässig, aber nicht in Unterabfragen.
WITH DepartmentPayroll( DepartmentID, amount ) AS ( SELECT DepartmentID, SUM( Salary ) AS amount FROM Employees GROUP BY DepartmentID ) SELECT DepartmentID, amount FROM DepartmentPayroll WHERE amount = ( SELECT MAX( amount ) FROM DepartmentPayroll ); |
Die obersten SELECT-Anweisungen in einer Ansichtsdefinition Allgemeine Tabellenausdrücke sind innerhalb der SELECT-Anweisung der obersten Stufe zulässig, die eine Ansicht festlegt, aber nicht innerhalb von Unterabfragen.
CREATE VIEW LargestDept ( DepartmentID, Size, pay ) AS WITH CountEmployees( DepartmentID, n ) AS ( SELECT DepartmentID, COUNT( * ) AS n FROM Employees GROUP BY DepartmentID ), DepartmentPayroll( DepartmentID, amount ) AS ( SELECT DepartmentID, SUM( Salary ) AS amount FROM Employees GROUP BY DepartmentID ) SELECT count.DepartmentID, count.n, pay.amount FROM CountEmployees count JOIN DepartmentPayroll pay ON count.DepartmentID = pay.DepartmentID WHERE count.n = ( SELECT MAX( n ) FROM CountEmployees ) OR pay.amount = ( SELECT MAX( amount ) FROM DepartmentPayroll ); |
Eine oberste SELECT-Anweisung in einer INSERT-Anweisung Allgemeine Tabellenausdrücke sind innerhalb einer SELECT-Anweisung der obersten Stufe in einer INSERT-Anweisung zulässig, aber nicht in Unterabfragen innerhalb der INSERT-Anweisung.
CREATE TABLE LargestPayrolls ( DepartmentID INTEGER, Payroll NUMERIC, CurrentDate DATE ); INSERT INTO LargestPayrolls( DepartmentID, Payroll, CurrentDate ) WITH DepartmentPayroll( DepartmentID, amount ) AS ( SELECT DepartmentID, SUM( Salary ) AS amount FROM Employees GROUP BY DepartmentID ) SELECT DepartmentID, amount, CURRENT TIMESTAMP FROM DepartmentPayroll WHERE amount = ( SELECT MAX( amount ) FROM DepartmentPayroll ); |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |