【问题标题】:Create Table based on SELECT Statement Results根据 SELECT 语句结果创建表
【发布时间】:2013-07-03 15:55:42
【问题描述】:

我是这个网站和一般 SQL 的新手。我希望你能帮上忙。我创建了以下 SQL 查询。我现在想创建一个新表并将查询结果传输到这个新表中。

是否可以在以下查询中添加语法以自动创建表?


SELECT
    Value [Value],
        DateTime [DateTime], 
            DatePart (Week, DateTime) [WeekNumber],
                hs.StorageItemID [StorageItemId]

FROM History_StorageItem hs

    JOIN History_Float hf ON hs.StorageItemId = hf.StorageItemId

GROUP BY DatePart (Week,DateTime), hs.StorageItemId, Value
ORDER BY hs.StorageItemId DESC

此外,与 DateTime 相关的此查询的结果返回 yyyy-mm-dd hh:mm:ss...... 是否可以从我的查询和数据添加到的结果值中删除时间我的表只是“日期”。

非常感谢您的支持,因为我对 SQL 的有限了解只能让我走到现在。

谢谢。

【问题讨论】:

  • 您使用的是哪个 RDBMS? MS SQL Server、MySQL 等?
  • SQL 标准是create table foo as select ...

标签: sql


【解决方案1】:

答案可能因 RDBMS 而异。您可以使用INTOSELECT 结果创建一个表,您可以将DATETIME 转换为DATE

SELECT
    Value [Value],
        CAST (DateTime AS DATE) [DateTime], 
            DatePart (Week, DateTime) [WeekNumber],
                hs.StorageItemID [StorageItemId]
INTO newTable
FROM History_StorageItem hs

    JOIN History_Float hf ON hs.StorageItemId = hf.StorageItemId

GROUP BY DatePart (Week,DateTime), hs.StorageItemId, Value
ORDER BY hs.StorageItemId DESC

【讨论】:

    【解决方案2】:

    确定您可以在 FROM 之前将 INTO 子句添加到 select 中

    SELECT Value [Value], DateTime [DateTime], DatePart (Week, DateTime) [WeekNumber], hs.StorageItemID [StorageItemId]
    INTO [TABLENAME]
    FROM History_StorageItem hs
    
    JOIN History_Float hf ON hs.StorageItemId = hf.StorageItemId
    GROUP BY DatePart (Week,DateTime), hs.StorageItemId, Value ORDER BY hs.StorageItemId DESC
    

    我向你推荐这些教程

    http://www.w3schools.com/sql/sql_select_into.asp

    【讨论】:

      【解决方案3】:
      create table YOURTABLENAME AS
      SELECT
          Value [Value],
              DateTime [DateTime], 
                  DatePart (Week, DateTime) [WeekNumber],
                      hs.StorageItemID [StorageItemId]
      
      FROM History_StorageItem hs
      
          JOIN History_Float hf ON hs.StorageItemId = hf.StorageItemId
      
      GROUP BY DatePart (Week,DateTime), hs.StorageItemId, Value
      ORDER BY hs.StorageItemId DESC
      

      【讨论】:

        【解决方案4】:

        另一方面,如果你想创建一个视图而不是一个表,你可以这样做:

        CREATE VIEW [newView] AS
        SELECT
        Value [Value],
            DateTime [DateTime], 
                DatePart (Week, DateTime) [WeekNumber],
                    hs.StorageItemID [StorageItemId]
        FROM History_StorageItem hs
        JOIN History_Float hf ON hs.StorageItemId = hf.StorageItemId
        GROUP BY DatePart (Week,DateTime), hs.StorageItemId, Value
        

        【讨论】:

          【解决方案5】:

          你应该使用日期格式化方法,这些取决于你的 sql server 类型

          Postgres

          MySQL

          Oracle

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-03-28
            • 1970-01-01
            • 1970-01-01
            • 2019-11-07
            • 1970-01-01
            • 1970-01-01
            • 2019-12-24
            相关资源
            最近更新 更多