SELECT
句は、文によって作成されるレコードの属性リストを定義します。
SELECT Sum(Amount) AS TotalSales
SELECT Sum(Amount) AS TotalSales, TotalSales / 4 AS QuarterAvg
注意:
SELECT
句で定義された属性を文のGROUP
句で使用する場合、その式はソース属性およびGROUP
句で使用されるその他の属性のみを参照できます。 集計を含めることはできません。
SELECT *の使用
SELECT *
では、指定されたレコード・ソースから一度にすべての属性を選択します。 SELECT *
を使用するためのルールは、次のとおりです:
SELECT *
を使用できます。 文のFROM
句によって、(コレクション名を参照する)名前付きの状態が指定されます。 非常に大きなコレクションからすべてのレコードを取り出す場合は、多少時間がかかる可能性があることに注意してください。
SELECT *
文ではAS
句を使用できません。 たとえば、次の問合せではエラーが戻されます:
SELECT * AS allRecs
SELECT *
はグループ化文では使用できません。
SELECT *
拡張には、ソース文内のLET
句で定義されたグループ化キーが含まれます。
DEFINE ResellerInfo AS SELECT DimReseller_ResellerName, DimGeography_StateProvinceName, DimReseller_Phone FROM SaleState; RETURN Resellers as SELECT * FROM ResellerInfo
この問合せでは、最初に3つの属性のデータから中間結果(ResellerInfoという名前)が生成され、その後、SELECT *
を使用してResellerInfoからすべての属性が選択されます。
RETURN Results as SELECT * FROM WineState
問合せでは、WineState状態がWinesコレクションを参照しています。これはそのすべてのコレクション・レコードが返されることを意味します。
SELECT *
をJOIN
句とともに使用することもできます:
DEFINE Reseller AS SELECT DimReseller_ResellerKey, DimReseller_ResellerName, DimReseller_AnnualSales FROM SaleState; DEFINE Orders AS SELECT FactSales_ResellerKey, FactSales_SalesAmount FROM SaleState; RETURN TopResellers AS SELECT R.*, O.FactSales_SalesAmount FROM Reseller R JOIN Orders O on (R.DimReseller_ResellerKey = O.FactSales_ResellerKey) WHERE O.FactSales_SalesAmount > 10000
例では、(RETURN TopResellers
文内の)式R.*
は、DEFINE Reseller
文で選択されたすべての属性が含まれるように拡張されます。
SELECT *
句の動作に注意する必要があります。 つまり、次のSELECT
句を想定しています:
SELECT Amt, **にAmtという名前の属性が含まれる場合、
SELECT
によってEQLエラーがトリガーされます: 属性"Amt"が複数回定義されています。
SELECT * FROM a JOIN b ON (...)
aとbの両方に同じ名前の属性が含まれる場合、問合せは前述と同じEQLエラーをトリガーします。 結合の2つの側が共有する属性の1つをリストします。 エラー・メッセージは、問題のある文名を参照することに注意してください。