ヘッダーをスキップ

Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド リリース6.0 B25770-01 |
| 目次 | 索引

前へ | 次へ |

## SelectList

SQL構文

SELECT文のSelectListパラメータの構文は、次のとおりです。

{* | [Owner.]TableName.* |
{ Expression | [[Owner.]TableName.]ColumnName |
[[Owner.]TableName.]ROWID | NULL
}
[[AS] ColumnAlias] } [,...]

パラメータ

SELECT文のSelectListには、次のパラメータがあります。

* | 問合せ結果の列として、FROM句に指定されたすべての表のすべての列を含めます。
[Owner.]TableName.* | 指定した表のすべての列を結果に含めます。
Expression | 複雑な式でも記述できます。たとえば、FROM句に指定されたいずれかの表の単一の列を指定したり、集計関数、算術演算子、複数の列またはNULLを含めることができます。SelectListに1つ以上の集計関数を指定した場合、GROUP BY句に指定されていない列名を指定することはできません。 FROM句を含まないSELECT文では、GROUP BYおよびHAVING句を使用できません。この文では、列、ROWIDまたは集計を参照できません。指定できるのは、定数、日付関数、ユーザー関数、動的パラメータ、順序または列です。ORDER BYまたはWHERE句を含めることができます。戻されるのは1行のみです。
[ [Owner.]Table.] ColumnName | 指定された所有者の指定された表の特定の列を含めます。順序のCURRVALまたはNEXTVAL列も指定できます。
[ [Owner.]Table.] ROWID | 指定された所有者の指定された表のROWID擬似列を含めます。
NULL | NULLを指定した場合、デフォルトではVARCHAR(0)のデータ型が生成されます。結果を別のデータ型に変換するには、CAST関数を使用します。 SELECT内で定数を使用できる場合は、NULLを指定できます。 ORDER BY句にはNULLを指定できます。
ColumnAlias | ORDER BY句で使用されます。列の別名はSelectListの列と対応している必要があります。同じ別名で複数の列を識別することができます。 {* | [Owner.]TableName.* | { Expression | [[Owner.]TableName.]ColumnName | [[Owner.]TableName.]ROWID } [[AS] ColumnAlias] } [,...]

説明

- 各句は、構文に示されたとおりの順序で指定する必要があります。
- SelectListの結果列は、次のいずれかの方法で取得できます。

- 結果列は、FROM句にリストされているいずれかの表から直接取得できます。
- 結果列の値は、FROM句にリストされている表の特定の列の値を使用して、算術式を使用して計算できます。
- 単一表の複数の列の値を算術式で結合して、結果列の値を生成できます。
- 異なる表の列の値を算術式で結合して、結果列の値を生成できます。
- 集計関数（AVG、MAX、MIN、SUMおよびCOUNT）を使用すると、行のグループの結果列の値を計算できます。集計関数は、単独で使用することも、式の中で使用することもできます。同じ表の複数の列を処理するDISTINCTオプションを含む集計関数を指定できます。GROUP BY句を指定しない場合は、問合せを満たすすべての行に関数が適用されます。GROUP BY句を指定した場合は、GROUP BY句で定義された各グループに1回ずつ関数が適用されます。GROUP BY句とともに集計関数を使用する場合は、SelectListに集計関数、算術式、GROUP BY句の列を含めることができます。
- 固定値を含む結果列は、定数を指定するか、または定数のみを含む式を使用して作成できます。

- SelectListを使用すると、結果列の取得方法を指定できるだけでなく、問合せ結果を表示する位置を制御できます。SelectListで最初に指定した結果列は、問合せ結果の最も左側の列に表示されます。
- SelectListの結果列は、左から右の順に番号が付けられます。左端の列の番号は1です。ORDER BY句内のこの列番号によって、結果列を参照できます。これは、算術式または集計関数で定義した列を参照する場合に特に便利です。
- 表をその表自身と結合するには、FROM句内で表の相関名を複数回定義して、SelectListとWHERE句でその相関名を使用して、その表の列を指定します。
- GROUP BY句を使用した場合、SelectListに従って、グループごとに1つの応答が返されます。

- 行は、グループ化される前にWHERE句によって削除されます。
- GROUP BY句は、結果行をグループ化します。
- SelectListの集計関数は、グループ単位で計算されます。

##### 例13.95

次の文は、部品が配送されるまでの平均日数を返します。

    SELECT AVG(DeliveryDays)
    FROM Purchasing.SupplyPrice;

    次の文は、20日未満で配送されるすべての部品の部品番号および配送時刻が返されます。

    SELECT PartNumber, DeliveryDays
    FROM Purchasing.SupplyPrice
    WHERE DeliveryDays < 20;

    単一の部品で複数行が返される場合があります。

##### 例13.96

次の文は、各部品の部品番号と平均価格を返します。

    SELECT PartNumber, AVG(UnitPrice)
    FROM Purchasing.SupplyPrice
    GROUP BY PartNumber;

##### 例13.97

この例では、結合によってカリフォルニア州の業者の名前と住所が返されます。行は、PartNumberの昇順で返されます。重複するPartNumberを含む行は、VendorNameの昇順で返されます。

FROM句では、SelectListとWHERE句の両方で使用される、2つの相関名（vとs）を定義しています。

VendorNumberは、VendorsとSupplyPriceで共通する唯一の列です。

    SELECT PartNumber, VendorName, s.VendorNumber,
           VendorCity
    FROM Purchasing.SupplyPrice s,
         Purchasing.Vendors v
    WHERE s.VendorNumber = v.VendorNumber
    AND VendorState = 'CA'
    ORDER BY PartNumber, VendorName;

##### 例13.98

この問合せでは、表Purchasing.Partsをそれ自身に結合して、シリアル番号が1133-P-01の部品と同じ販売価格の部品を特定します。

    SELECT q.PartNumber, q.SalesPrice
    FROM Purchasing.Parts p, Purchasing.Parts q
    WHERE p.SalesPrice = q.SalesPrice AND
          p.SerialNumber = '1133-P-01';

##### 例13.99

次に、特定の行のROWIDを取得する方法の例を示します。取得したROWIDの値は、後で別のSELECT文、CREATE VIEW 文またはUPDATE文で使用できます。

    SELECT ROWID
    FROM Purchasing.Vendors
    WHERE VendorNumber = 123;

##### 例13.100

次に、列の別名を使用して、employees表からデータを取得する方法の例を示します。

    SELECT max(salary) AS max_salary FROM employees;