# Select

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)可通过标准 SQL SELECT 语句从 ODBC 数据源或 OLE DB 提供商选择字段。然而，是否接受 SELECT 语句取决于所使用的 ODBC 驱动程序或 OLE DB 提供程序。

语法：

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 提供者解释，因此可能会发生一般的 SQL 语法偏差，具体取决于 ODBC 驱动程序的功能或 OLE DB 提供者，例如：

* 有时，不允许使用 as，即 aliasname 必须紧跟在 fieldname 之后。
* 如果使用 as，有时会强制使用 aliasname。
* 有时，不支持 distinct、as、where、group by、order by 或 union。
* 有时，ODBC 驱动程序不支持所有以上列出的不同引号。

信息注释这不是完整的 SQL SELECT 语句！例如，SELECT 语句可以嵌套，可在一个 SELECT 语句中创建几个连接，表达式中允许的函数个数有时非常大等。

参数：

Select 参数

| 参数 | 说明 |
| --- | --- |
| [](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)<br>distinct | distinct 是一个在所选字段中的值的重复组合只应加载一次时使用的谓词。 |
| [](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm) distinctrow | distinctrow 是一个在源表格中的重复记录只应加载一次时使用的谓词。 |
| fieldlist | fieldlist ::= (\*\| field ) {, field }<br><br>要选择的字段列表。使用 \* 作为字段列表，表示表格中全部字段。<br><br>fieldlist ::= field {, field }<br><br>一个或多个字段的列表，用逗号分开。<br><br>field ::= ( fieldref \| expression ) [as aliasname ]<br><br>例如表达式可以为一个基于一个或几个其他字段的数字或字符串函数。一些通常接受的运算符或函数为：+、-、\*、/、&（字符串串联）、sum(fieldname)、count(fieldname)、avg(fieldname)(average)、month(fieldname) 等有关详细信息，请参阅 ODBC 驱动程序的文档。<br><br>fieldref ::= [ tablename. ] fieldname<br><br><br>tablename 和 fieldname 是它们表示的意思相似的文本字符串。如果他们包含空格则它们必须包括在直双引号内。<br><br>as 子句用于为字段分配一个新名。 |
| from | tablelist ::= table {, table }<br><br>要从其中选择字段表格列表。<br><br>table ::= tablename [ [as ] aliasname ]<br><br>tablename可以也可以不放在引号内。<br><br>[From](https://help.qlik.com/zh-CN/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/From.htm) |
| [](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)<br>where | where 是一个子句，用于陈述一个记录是否应该包括在选择项内。<br><br>criterion 是一个逻辑表达式，有时可能会非常复杂。以下是可以接受的一些运算符：数值运算符和函数、=、&lt;&gt; 或 #(不等于）、&gt;、&gt;=、&lt;、&lt;=、and、or、not、exists、some、all、in 和新的 SELECT 语句。有关详细信息，请参阅文档 ODBC 驱动程序或 OLE DB 提供者。 |
| [](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)<br>group by | group by 是一个子句，用于将几个记录聚合（组成）为一个整体。对于某些字段来说，在一个组中，所有记录要么拥有一个相同的值，要么字段只能用于一个表达式内，如作为合计或平均值。基于一个或几个字段的表达式在字段符号的表达式中定义。 |
| [](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)<br>having | having 是一个子句，用于以一种与 where 子句在限定记录时相同的使用方式限定组。 |
| [](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)<br>order by | order by 是一个用于表述 SELECT 语句的结果表排序顺序的子句。 |
| [](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)<br>join | join 是一个限定符，用于表述几个表格是否应联接为一个整体。字段名及表格名如果包含空格或来自国际字符集的字母则必须被放进引号内。脚本由 QlikView 自动生成时，使用的引号应为在 ODBC 语句的数据源定义中指定的 OLE DB 驱动程序或 Connect 提供者偏好的引号。 |

示例 1:

``SELECT * 
 FROM `Categories`;``

示例 2:

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

示例 3:

``SELECT `Order 
 ID`, `Product ID`,`` `` `Unit Price` 
 * Quantity * (1-Discount) as NetSales `` ``FROM `Order 
 Details`;``

示例 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`;``

## 了解详情

* [Join](https://help.qlik.com/zh-CN/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptPrefixes/Join.htm)