标签: column-alias

Postgres列别名是否有任何限制?

对于Postgres列别名的名称,在长度,包含非ASCII字符的能力等方面是否有任何限制?从版本8.1到现在,这些限制是否有任何变化?

sql postgresql column-alias

13
推荐指数
2
解决办法
2万
查看次数

SQL:作为ColumnName的NULL意味着什么

据我所知,AS用于创建别名.因此,将一个长名称别名作为较短名称是有意义的.但是,我看到一个SQL查询NULL as ColumnName 这意味着什么?

SELECT *, NULL as aColumn
Run Code Online (Sandbox Code Playgroud)

sql column-alias

11
推荐指数
1
解决办法
3万
查看次数

SQL无法识别where子句中的列别名

我只是SQL的初学者,但我遇到了这个恼人的错误.SQL遇到此脚本的WHERE子句的问题:

SELECT
  ITEM_ID, ITEM_PRICE, DISCOUNT_AMOUNT, QUANTITY, 
  (ITEM_PRICE*QUANTITY) AS price_total, 
  (DISCOUNT_AMOUNT*QUANTITY) AS discount_total, 
  ((ITEM_PRICE-DISCOUNT_AMOUNT)*QUANTITY) AS item_total
FROM ORDER_ITEMS
WHERE item_total > 500
ORDER BY item_total;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Error starting at line : 1 in command -
SELECT 
  ITEM_ID, ITEM_PRICE, DISCOUNT_AMOUNT, QUANTITY,  
  (ITEM_PRICE*QUANTITY) AS price_total,  
  (DISCOUNT_AMOUNT*QUANTITY) AS discount_total,  
  ((ITEM_PRICE-DISCOUNT_AMOUNT)*QUANTITY) AS item_total 
FROM ORDER_ITEMS 
WHERE item_total > 500 
ORDER BY item_total DESC;
Error at Command Line : 7 Column : 7
Error report -
SQL Error: ORA-00904: "ITEM_TOTAL": invalid identifier
00904. 00000 -  "%s: …
Run Code Online (Sandbox Code Playgroud)

sql oracle column-alias

7
推荐指数
1
解决办法
2万
查看次数

为什么不能在下一个SELECT表达式中使用列别名?

我可以修改使用的列别名下一avg_timecnt在表达ROUND(avg_time * cnt, 2)

SELECT 
    COALESCE(ROUND(stddev_samp(time), 2), 0) as stddev_time, 
    MAX(time) as max_time, 
    ROUND(AVG(time), 2) as avg_time, 
    MIN(time) as min_time, 
    COUNT(path) as cnt, 
    ROUND(avg_time * cnt, 2) as slowdown, path
FROM 
    loadtime
GROUP BY
    path
ORDER BY
    avg_time DESC
LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

它将引发下一个错误:

ERROR:  column "avg_time" does not exist
LINE 7:  ROUND(avg_time * cnt, 2) as slowdown, path
Run Code Online (Sandbox Code Playgroud)

但是,下一个可以正常工作(使用主表达式而不是列别名:

SELECT 
    COALESCE(ROUND(stddev_samp(time), 2), 0) as stddev_time, 
    MAX(time) as max_time, 
    ROUND(AVG(time), 2) as avg_time, 
    MIN(time) as …
Run Code Online (Sandbox Code Playgroud)

sql postgresql column-alias

6
推荐指数
2
解决办法
3615
查看次数

在 SQL Server 2012 中对计算列使用 CASE

我有一个名为 temp 的数据库,其中包含每日股票价格:

Ticker    Date      price
ABC     01/01/13    100.00 
ABC     01/02/13    101.50 
ABC     01/03/13     99.80 
ABC     01/04/13     95.50 
ABC     01/05/13     78.00 
XYZ     01/01/13     11.50 
XYZ     01/02/13     12.10 
XYZ     01/03/13     17.15 
XYZ     01/04/13     14.10 
XYZ     01/05/13     15.55 
Run Code Online (Sandbox Code Playgroud)

drawdown我计算了每只股票的最高价格和每天每只股票的累计价格的运行总和:(最高价格 - 当前价格)/最高价格)

       SELECT t.Ticker,
              t.Date,
              t.price, 
           max(t.price) over (partition by ticker order by date) as max_price,
           (t.price / max(t.price) over (partition by ticker order by date)) - 1       
as Drawdown

       FROM [temp] t;


    Ticker  Date         price  max_price    Drawdown
    ABC     01/01/13     100.00      100.00 …
Run Code Online (Sandbox Code Playgroud)

sql case calculated-columns column-alias

6
推荐指数
1
解决办法
1万
查看次数

Laravel 4 Eloquent Column Alias

我想要实现的是在我的数据库中我有一个名为channel的表我正在使用laravel的eloquent类从表中访问这些属性我面临的问题是

表名是列,列名是通道

所以当访问该属性时看起来像这样.

User::find(1)->channel->channel
Run Code Online (Sandbox Code Playgroud)

我怎么能修改这个说

User::find(1)->channel->name
Run Code Online (Sandbox Code Playgroud)

我们无法更改数据库中的表名.

我想到的选项:

1)为需要更改列的表创建视图.太乱了...

2)使用列别名.... laravel文档...叹息..不知道怎么样?

3)使用带有create_function的属性集来调用this-> channel但我很确定它不起作用,因为laravel正在使用动态属性.当它在数组中填写时,我非常确定它会将其更改为列的名称.

我可以在我的belongs_to/hasOne/hasMany函数中将属性更改为我想要使用的名称的别名,以便稍后我可以更改它.我不知道那会有多好用......

有什么想法吗?非常感激

php view column-alias laravel

5
推荐指数
1
解决办法
8333
查看次数

在WHERE语句中无法识别列别名

我对我创建的一个查询有一个奇怪的'问题'.鉴于下一个查询:

 SELECT 
 ID,
 DistanceFromUtrecht,
 (
  SELECT
   (MAX(DateUntil) - (ReleaseDays * 60 * 60 * 24))
  FROM
   PricePeriod
  WHERE
   PricePeriod.FK_Accommodation = Accommodation.ID
 ) AS LatestBookableTimestamp
FROM
 Accommodation
WHERE
 LatestBookableTimestamp < UNIX_TIMESTAMP()
Run Code Online (Sandbox Code Playgroud)

phpMyAdmin不断抛出一个关于没有名为'LatestBookableTimestamp'的列的错误,即使我有一个由子查询检索的列,该别名.我也尝试过用tableprefix选择每一列.这不起作用.最后,我通过table-alias选择了所有列,并为表提供了别名.一切都没有运气.

有人能告诉我我做错了什么吗?我甚至搜索了一些资源,看看我是不是错了,但在很多情况下,互联网上的作者使用与我相同的语法.

mysql sql database column-alias

4
推荐指数
2
解决办法
6644
查看次数

Oracle自动重命名列中的列?

我有2个表,包含以下字段.

表格1

  • AA
  • BB
  • CC
  • DD

表2

  • AA
  • CC
  • EE

询问

Select t1.*, 
       t2.*
  from table1 t1,
  join table2 t2 on table1.DD = table2.EE
Run Code Online (Sandbox Code Playgroud)

我的数据列返回以下列名称:

AA, BB, CC, DD, **AA_1**, **CC_1**, EE
Run Code Online (Sandbox Code Playgroud)

我不希望列名这样.我希望他们将表名称作为common(或所有列)的名称前缀.我可以解决这个问题:

select t1.AA as t1_AA, t1.BB as t1_BB, t1.CC as t1_CC, t1.DD as t1_DD, 
 t2.AA as t2_AA, t2.CC as t2_CC, t2.EE as t2_EEE
   from table1 t1,
    inner join table2 t2
    on table1.DD = table2.EE
Run Code Online (Sandbox Code Playgroud)

但这意味着每个地方的每个选择都会变得长500行.在oracle中有没有神奇的方法呢?基本上我想写我的代码

 select t1.* as t1_*, t2.* as t2_*
       from table1 t1,
        inner join table2 …
Run Code Online (Sandbox Code Playgroud)

sql oracle alias column-alias

4
推荐指数
2
解决办法
2万
查看次数

重命名Spark DataFrame中的嵌套结构列

我正在尝试在Scala中更改DataFrame列的名称。我可以轻松更改直接字段的列名,但在转换数组结构列时遇到困难。

以下是我的DataFrame模式。

|-- _VkjLmnVop: string (nullable = true)
|-- _KaTasLop: string (nullable = true)
|-- AbcDef: struct (nullable = true)
 |    |-- UvwXyz: struct (nullable = true)
 |    |    |-- _MnoPqrstUv: string (nullable = true)
 |    |    |-- _ManDevyIxyz: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)

但我需要如下所示的架构

|-- vkj_lmn_vop: string (nullable = true)
|-- ka_tas_lop: string (nullable = true)
|-- abc_def: struct (nullable = true)
 |    |-- uvw_xyz: struct (nullable = true)
 |    |    |-- mno_pqrst_uv: string (nullable = true)
 |    |    |-- …
Run Code Online (Sandbox Code Playgroud)

scala dataframe column-alias apache-spark

4
推荐指数
1
解决办法
994
查看次数

在 select 子句中使用 equals 设置列别名

今天我看到有人使用这种语法(A)在 sql select 中设置列​​别名。

A

Select [ColumnAlias] = Column1 FROM Table
Run Code Online (Sandbox Code Playgroud)

通常我使用

Select Column1 AS [ColumnAlias] FROM Table
Run Code Online (Sandbox Code Playgroud)

我曾经=设置局部变量,但从未设置为别名。Select @LocalVar = Column1 FROM Table

有什么理由比 A 更喜欢 B 吗?我似乎在 A 搜索中找不到太多信息。

sql column-alias

4
推荐指数
1
解决办法
1674
查看次数

如何在SQL查询中分解出重复的表达式?列别名似乎不是故障单

所以,我有一个看起来像这样的查询:

SELECT id, 
    DATE_FORMAT(CONVERT_TZ(callTime,'+0:00','-7:00'),'%b %d %Y') as callDate, 
    DATE_FORMAT(CONVERT_TZ(callTime,'+0:00','-7:00'),'%H:%i') as callTimeOfDay, 
    SEC_TO_TIME(callLength) as callLength
FROM cs_calldata WHERE 
    customerCode='999999-abc-blahblahblah' AND 
    CONVERT_TZ(callTime,'+0:00','-7:00') >= '2010-04-25' AND
    CONVERT_TZ(callTime,'+0:00','-7:00') <= '2010-05-25'
Run Code Online (Sandbox Code Playgroud)

如果你像我一样,你可能会开始认为,如果我没有要求它计算CONVERT_TZ(callTime,'+0:00','-7:00')四次单独的时间,它可能会提高可读性和可能的​​查询性能.

所以我尝试为该表达式创建一个列别名,并用该别名替换进一步的出现:

SELECT id, 
    CONVERT_TZ(callTime,'+0:00','-7:00') as callTimeZoned,
    DATE_FORMAT(callTimeZoned,'%b %d %Y') as callDate, 
    DATE_FORMAT(callTimeZoned,'%H:%i') as callTimeOfDay, 
    SEC_TO_TIME(callLength) as callLength
FROM cs_calldata WHERE 
    customerCode='5999999-abc-blahblahblah' AND 
    callTimeZoned >= '2010-04-25' AND
    callTimeZoned <= '2010-05-25'
Run Code Online (Sandbox Code Playgroud)

这是我学习的时候,引用MySQL手册:

标准SQL不允许在WHERE子句中引用列别名.强制执行此限制是因为在评估WHERE子句时,可能尚未确定列值.

所以,这种方法似乎已经死了.

如何用这样的重复表达式编写查询来处理它?

sql select expression column-alias

3
推荐指数
1
解决办法
559
查看次数

PostgreSQL:错误:列“bb”不存在

我不擅长 SQL,我想在下面的查询中使用分区来获取 MAX,但是当我在没有该最大驱动列的 where 子句的情况下使用相同的查询时,它会说该列不存在,但是如果我从 where 中删除该列我可以在选择中看到存在相同的列。

select 
MAX(case when total_split_count = 0 or total_split_count is null then total_split_count  else 1 end) OVER (PARTITION BY ia.col1,ia.col2,ia.col3,ia.col4,ia.col5,ia.col6) as bb
from audits.tbl_name ia
where bb = 1
Run Code Online (Sandbox Code Playgroud)

错误:列“bb”不存在位置:304

其中 bb = 1 ^ 1 语句失败。

但查询使用 where 子句运行:

select 
MAX(case when total_split_count = 0 or total_split_count is null then total_split_count  else 1 end) OVER (PARTITION BY ia.col1,ia.col2,ia.col3,ia.col4,ia.col5,ia.col6) as bb
from audits.tbl_name ia
Run Code Online (Sandbox Code Playgroud)

注意:我在运行时通过“as”创建了该列。

postgresql column-alias

1
推荐指数
1
解决办法
284
查看次数

Mysql Select语句

我正在查询数据库:

SELECT SUM(Hours) 
  from User 
 where surname = 'johnson';
Run Code Online (Sandbox Code Playgroud)

每当我运行它时,如您所知,它将显示名为SUM(Hours)的选定列.

题:

有没有办法在不改变数据库表的情况下"重命名"它?

mysql sql column-alias

0
推荐指数
1
解决办法
87
查看次数