【问题标题】:Using 'AS' Statement in MS QUERY SQL with 'UNION ALL'在带有“UNION ALL”的 MS QUERY SQL 中使用“AS”语句
【发布时间】:2014-12-11 13:12:57
【问题描述】:

我的公司采用双重公司结构,要求将数据分开保存。我们有两个结构相同的数据集。我通常使用 MS Query 使用一个数据集编写 SQL,当我有我想要的内容时,我只需添加一条 UNION ALL 语句并重复 SQL,但将任何数据集名称替换为第二个。它总是可以正常工作,给我一个结合两个数据集的数据的单一查询。

但是,我使用 datepart 函数检索一些日期字段以获取记录的年份和月份,并使用 AS 语句来命名列。 示例:选择 datepart(yyyy,receiptdate) 作为“年份”

虽然它适用于使用一个数据集的原始查询,但当我创建“UNION ALL”并添加其他 SQL 时,列名变为空白。对于一些我正在总结和重命名的字段也是如此,它们的名称比 SUM(QUANTITY_ORDERED) 更简洁——它们在 UNION ALL 之后变为空白。

在使用 UNION ALL 时是否有重命名列的技巧或其他建议?

谢谢, 标记

【问题讨论】:

    标签: sql union-all ms-query


    【解决方案1】:

    如果您指的是 SQL SERVER(老实说,我不确定 ms-query 是什么),那么您的列别名应该是在 union 的第一条语句中完成的

    例如,下面的第一个示例将列名留空,而第二个示例提供了正确的列名;

    -- Example 1
    Select datepart(yyyy,CURRENT_TIMESTAMP) 
    UNION ALL 
    SELECT datepart(yyyy,DATEADD(YY, -1, CURRENT_TIMESTAMP)) as "Year"
    
    -- Example 2
    Select datepart(yyyy,CURRENT_TIMESTAMP) as "Year"
    UNION ALL 
    SELECT datepart(yyyy,DATEADD(YY, -1, CURRENT_TIMESTAMP))
    

    【讨论】:

      猜你喜欢
      • 2013-09-01
      • 2016-09-01
      • 1970-01-01
      • 2023-01-26
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      相关资源
      最近更新 更多