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。
- 有時不支援 distinct、as、where、group by、order by 或 union。
-
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
tablename 與 fieldname 是名副其實的文字字串。如果其包含空格,則必須由直雙引號括住。 as 子句用來指派欄位的新名稱。 |
from
|
tablelist ::= table {, table }
要從其中選取欄位的表格清單。
table ::= tablename [ [as ] aliasname ]
tablename 不一定會在引號內。
From
|
where
|
where 是指明選項中是否應該包含記錄的子句。 criterion 是一個邏輯運算式,有些時候可能會非常複雜。接受的部分運算子為:數值運算子和函數、=、<> 或 #(不等於)、>、>=、<、<=、and、or、not、exists、some、all、in 以及新的 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`;