2017-10-06 47 views
2

比如我有一个查询:无论如何在结果显示时连接选择查询列吗?

select item_name, day, month, year from some_table; 

,但我想结果表为2列,而不是4,这样的:

[Item name][Date (dd.mm.YYYY)]

我们能做到这一点?

我使用Google的Biq Query标准SQL。

+3

哪'RDBMS'用它玩? – Wanderer

+3

为什么你要在第一时间分开存储时间组件? –

+0

@ThorstenKettner - 我使用Google的BiqQuery标准SQL。 – Kosmos

回答

3

下面是BigQuery的标准SQL

#standardSQL 
SELECT item_name, DATE(year, month, day) AS date 
FROM `yourTable` 

您可以测试/使用下面的虚拟数据

#standardSQL 
WITH `yourTable` AS (
    SELECT 'abc' AS item_name, 5 AS day, 10 AS month, 2017 AS year UNION ALL 
    SELECT 'xyz', 1, 9, 2017 
) 
SELECT item_name, DATE(year, month, day) AS date 
FROM `yourTable` 
+0

工作正常!谢谢。 – Kosmos

2

使用此查询

select item_name, CONCAT(cast(day as STRING)) ,'.' ,cast(month as STRING), '.',cast(year as STRING)) as Date 
+0

出现此错误:'错误:运算符+对于参数类型没有匹配的签名:STRING,STRING。支持的签名:INT64 + INT64; FLOAT64 + FLOAT64 at [1:26]' – Kosmos

+1

select item_name,CONCAT(cast(day as STRING)),'。' ,投(月份为STRING),'。',投(年份为STRING)为日期 – Vivek

1

您可以使用CONCAT

查询

select item_name, concat(day, '.', month, '.', year) as date 
from some_table; 

如果列是整数类型,那么你必须将其转换为字符串。

select item_name, 
concat(cast(day as string), '.', cast(month as string), '.', cast(year as string)) as date 
from some_table; 
+1

谢谢。这也有效。 'Date'一个很好的替代解决方案。 – Kosmos