当前位置: 首页 > 面试题库 >

查询中的字段别名,nzsql

汪信鸥
2023-03-14
问题内容

我在Netezza工作,或者您知道的是Analytics(分析)的纯数据-nzsql,但是我认为这是一个ANSI
SQL问题。这个问题是如此基本,我什至不知道如何搜索。

CREATE TEMPORARY TABLE DEMO1 AS SELECT 'SMORK' AS SMORK, 'PLONK' AS PLONK, 'SPROING' AS SPROING;

SELECT SMORK AS PLONK, PLONK, SPROING AS CLUNK, CLUNK
FROM DEMO1;

这将返回“
SMORK,PLONK,SPROING,SPROING”,也就是说,重用CLUNK别名可以很好地进行查询,但是源表中的列会覆盖PLONK别名。现在,如果我真的想要源表中的列,则可以编写SELECT
SMORK AS PLONK,DEMO1.PLONK等,但是我不知道如何指定我更喜欢先前在同一目录中定义的别名。 SELECT子句。

有人知道吗?


问题答案:

在Netezza中,选择列时, Netezza将首先搜索表列,然后搜索别名。

示例:假设我们有以下语句:

CREATE TEMPORARY TABLE EMPLOYEES AS 
SELECT 1001 AS EMPLOYEE_ID
      ,'Alex' AS FIRST_NAME
      ,'Smith' AS LAST_NAME
      ,'Alex J. Smith' AS FULL_NAME;

SELECT 
     EMPLOYEE_ID
    ,FIRST_NAME
    ,LAST_NAME
    ,LAST_NAME||', '||FIRST_NAME AS FULL_NAME
    ,'My full name is :'||FULL_NAME AS DESCRIPTION
  FROM EMPLOYEES;

它将返回

**EMPLOYEE_ID FIRST_NAME LAST_NAME FULL_NAME说明**
   1001 Alex Smith Smith,Alex我的全名是:Alex J. Smith

注意,在 DESCRIPTION中 ,FULL_NAME值是从表列而不是别名中选择的。

如果要使DESCRIPTION列使用别名“ FULL_NAME”中的值,则可以分两个步骤进行操作:

步骤1. 创建一个包含所有想要的列的子查询。对于要重用的所有别名,您需要将其命名为FROM子句中任何表列中都不存在的名称。

步骤2. 仅从子查询中选择所需的列。

CREATE TEMPORARY TABLE EMPLOYEES AS SELECT 1001 AS EMPLOYEE_ID, 'Alex' AS FIRST_NAME, 'Smith' AS LAST_NAME, 'Alex J. Smith' AS FULL_NAME;

WITH EMPLOYESS_TMP AS (
SELECT 
     EMPLOYEE_ID
    ,FIRST_NAME
    ,LAST_NAME
    ,LAST_NAME||', '||FIRST_NAME AS FULL_NAME2
    ,FULL_NAME2 AS FULL_NAME
    ,'My full name is :'||FULL_NAME2 AS DESCRIPTION
  FROM EMPLOYEES)
SELECT 
     EMPLOYEE_ID
    ,FIRST_NAME
    ,LAST_NAME
    ,FULL_NAME
    ,DESCRIPTION
 FROM EMPLOYESS_TMP;

这将返回您想要的:

**EMPLOYEE_ID FIRST_NAME LAST_NAME FULL_NAME说明**
   1001 Alex Smith Smith,Alex我的全名是:Smith,Alex


 类似资料:
  • 问题内容: 我可以使用简单的通配符查询,如下所示: 但是,如果我想在字段中使用通配符,那又如何呢?应该如何看待有效查询: 问题答案: 您可以使用query_string,它允许使用字段名通配符和查询文本通配符。 这些线周围的东西:

  • 我有两张有相同字段桌子。(请不要责怪设计)。 以下仅针对示例架构 表A ID 姓名 电话 键 所以,我想在一次查询中从满足条件“keys”的表A或表B中查询id、name,返回字段只有“id”和“name”,不管它是从表A或表B 中查询 从TABELA中选择a.id、a.name、b.id、b.name作为a,TABLEB作为b,其中a.keys=“1”或b.keys=“1” 它将重复的id、na

  • 我在QueryDSL中有以下查询: 我正在尝试在主查询的子查询(字段 1 和字段 2)中引用别名字段。不幸的是,我得到这个错误: 我还尝试了以下内容: 但我得到的是相同的错误,只是“AliasedTable”而不是“field1”。 如何从outter select中引用别名字段? 先谢谢你。

  • 本文向大家介绍C# DataTable中查询指定字段名称的数据,包括了C# DataTable中查询指定字段名称的数据的使用技巧和注意事项,需要的朋友参考一下 1.查询后获取对应的数据集后,传递参数strcodeName,根据数据集中strcodeName的匹配对应字段,获取数据集中对应的目的字段 2.默认赋值匹配字段,查询后获取目的字段

  • 问题内容: 我在为查询中的字段生成别名时遇到问题,例如,该字段为我提供了去年和前一年的收入。我的理解是我可以做些类似的事情: 但这是行不通的。有人知道如何做到这一点吗? 我想以一张桌子结束 在此先多谢! 问题答案: DECLARE @sql VARCHAR(1000); SET @sql = ‘SELECT 1234 AS REVENUE’ + CAST (year(DATEADD(year,-1

  • 问题内容: 具有以下映射: 我在上面放了两个项目: 现在,我想在每个字段上搜索,但是,所以我要做的是: 它应该只显示该项目,因为第二个项目带有单词,但是它在上,这就是我要忽略的内容。如何存档? PS:这只是一个简单的示例,我有一个包含很多属性的映射,我想在某些搜索中忽略其中的一些属性。 PS2:我正在使用ES 2.3.2 问题答案: 该设置仅在不返回响应中的字段时才有用,但这并不排除搜索该字段。