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つをリストします。 エラー・メッセージは、問題のある文名を参照することに注意してください。