====== SELECT Statement ====== SELECT statement allows you to run queries. ===== SELECT TOP n ===== You can specify a SELECT statement with the TOP clause. HPL/SQL automatically converts it to LIMIT clause for Hive. **Example**: SELECT TOP 3 name FROM sales; -- SELECT name FROM sales LIMIT 3 is executed **Compatibility**: Microsoft SQL Server. **Version**: HPL/SQL 0.3.7 ===== SELECT Without FROM Clause ===== You can specify a SELECT statement without FROM. HPL/SQL can automatically add the FROM clause using the table name defined by the [[configuration#hplsqldualtable|hplsql.dual.table]] option. By default, HPL/SQL uses //default.dual// table name. Make sure such table exists in the database and contains exactly one row and one column only. **Example**: SELECT unix_timestamp(); -- SELECT unix_timestamp() FROM default.dual is executed **Compatibility**: Microsoft SQL Server, PostgreSQL, MySQL and Netezza. **Version**: HPL/SQL 0.3 ===== FROM TABLE (VALUES ... ) Clause ===== You can generate table rows using TABLE (VALUES ...) clause (row constructor). Syntax: FROM TABLE (VALUES row, ...) AS table_alias (col, ...) **Example 1**: SELECT * FROM TABLE (VALUES 1, 2, 3) AS rn(rownum); rownum ------ 1 2 3 **Example 2**: SELECT * FROM (VALUES (1,1), (2,2), (3,3)) AS rn(c1, c2); c1 c2 --------- 1 1 2 2 3 3 Note that HPL/SQL transforms FROM (VALUES ...) clause to SELECT UNION ALL subquery before the execution in Hive: SELECT * FROM (SELECT 1 AS c1, 1 AS c2 FROM default.dual UNION ALL SELECT 2 AS c1, 2 AS c2 FROM default.dual UNION ALL SELECT 3 AS c1, 3 AS c2 FROM default.dual) rn You can specify the single row, single column dual table using [[configuration#hplsqldualtable|hplsql.dual.table]] option. **Compatibility**: IBM DB2, Microsoft SQL Server **Version**: HPL/SQL 0.3 See also: * [[select-into|SELECT INTO]]