Select

透過標準 SQL SELECT 陳述式可選取來自 ODBC 資料來源或 OLE DB 提供者的欄位。然而,是否接受 SELECT 陳述式取決於所使用的 ODBC 驅動程式或 OLE DB 提供者。

Syntax:  

Select [all | distinct | distinctrow | top n [percent] ] fieldlist

From tablelist

[where criterion ]

[group by fieldlist [having criterion ] ]

[order by fieldlist [asc | desc] ]

[ (Inner | Left | Right | Full) join tablename on fieldref = fieldref ]

 

此外,數個 SELECT 陳述式有時可透過使用 union 運算子串連成一個。

selectstatement Union selectstatement

 

SELECT 陳述式是由 ODBC 驅動程式或 OLE DB 提供者解譯,因此,根據 ODBC 驅動程式或 OLE DB 提供者的能力,可能發生一般 SQL 語法的偏差,例如:

  • 有時候不允許 as,例如 aliasname 必須緊接在 fieldname 後。
  • 如果使用 aliasname,則有時會強制使用 as
  • 有時不支援 distinctaswheregroup byorder byunion
  • ODBC 驅動程式有時不接受所有上列的不同引號。
備註: 這不是 SQL SELECT 陳述式的完整描述!例如,SELECT 陳述式可為巢狀、可在一個 SELECT 陳述式中進行數個聯結、運算式中允許的函數有時會非常大量等等。

Arguments:  

引數 描述
distinct distinct 是一個述詞,於僅載入一次所選欄位中的重複值組合時才會使用。
distinctrow distinctrow 是一個述詞,於僅載入一次來源表格中的重複記錄時才會使用。
fieldlist fieldlist ::= (*| field ) {, field }

要選取的欄位清單。使用 * 做為欄位清單表示表格中的所有欄位。

fieldlist ::= field {, field }

一或多個欄位的清單,以逗號分隔。

field ::= ( fieldref | expression ) [as aliasname ]

運算式可以是基於一或數個其他欄位的數值或字串函數。常接受的一些運算子和函數包括:+-*/& (字串串連)、sum(fieldname)count(fieldname)avg(fieldname)(average)month(fieldname) 等。如需詳細資訊,請參閱 ODBC 的文件。

fieldref ::= [ tablename. ] fieldname

tablenamefieldname 是名副其實的文字字串。如果其包含空格,則必須由直雙引號括住。

as 子句用來指派欄位的新名稱。
from tablelist ::= table {, table }

要從其中選取欄位的表格清單。

table ::= tablename [ [as ] aliasname ]

tablename 不一定會在引號內。

From

where where 是指明選項中是否應該包含記錄的子句。

criterion 是一個邏輯運算式,有些時候可能會非常複雜。接受的部分運算子為:數值運算子和函數、=<>#(不等於)、>>=<<=andornotexistssomeallin 以及新的 SELECT 陳述式。如需詳細資訊,請參閱 ODBC 驅動程式或 OLE DB 提供者的文件。

group by group by 是一個子句,用來將數筆記錄彙總 (分組) 成一筆記錄。在一個群組內的某些欄位中,所有記錄都必須擁有相同的值,否則只能從運算式內使用該欄位,例如做為加總或平均。基於一或數個欄位的運算式會定義於欄位符號的運算式中。
having having 是一個子句,用來限定群組,方式與如何使用 where 子句來限定記錄類似。
order by order by 是一個子句,用來表示 SELECT 陳述式所產生表格的排序順序。
join join 是一個限定詞,表示是否要將數個表格聯結成一個表格。如果欄位名稱與表格名稱包含空格或國家字元集的字母,則必須以引號括住。當 Qlik Sense 自動產生指令碼時,使用的引號會是 ODBC 驅動程式或 OLE DB 提供者的慣用引號,並且它們是由Connect 陳述式中,資料來源的資料來源定義所指定。

Example 1:  

SELECT * FROM `Categories`;

Example 2:  

SELECT `Category ID`, `Category Name` FROM `Categories`;

Example 3:  

SELECT `Order ID`, `Product ID`,

`Unit Price` * Quantity * (1-Discount) as NetSales

FROM `Order Details`;

Example 4:  

SELECT `Order Details`.`Order ID`,

Sum(`Order Details`.`Unit Price` * `Order Details`.Quantity) as `Result`

FROM `Order Details`, Orders

where Orders.`Order ID` = `Order Details`.`Order ID`

group by `Order Details`.`Order ID`;

See also: