【问题标题】:combine four table into one new table将四个表合并为一个新表
【发布时间】:2013-11-18 09:32:28
【问题描述】:
SELECT a.delivery_date,
       a.delivery_hour, 
       a.price as EX-ANTE, 
FROM mms_realtime_dispatch_prices_report a

  UNION ALL

SELECT b.delivery_date,
       b.delivery_hour,
       b.price as EX-POST,
FROM mms_realtime_dispatch_prices_report b

  UNION ALL

SELECT c.region,
       c.dem_rtdel,
       c.date,
FROM pub_demand_lwap c;

  UNION ALL

SELECT region,
       report,
       hour,
       SUM(q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11)
FROM pub_markets_bids_and_offers
WHERE delivery date=03/16/2011
GROUP BY hour

帮助!需要将这四张表合并为一张新表,无重复数据 你能帮我把这四张桌子组合成一张桌子吗?这是我第一次遇到这种情况。我真的需要帮助:(

【问题讨论】:

标签: php mysql sql sql-server


【解决方案1】:

在 SQL Server 中,联合仅在查询返回的列数和类型相同时才有效。

【讨论】:

    【解决方案2】:

    你需要让你的联合查询第一次我可以看到查询有很多问题目前,

    1. 每次选择返回的列数不同,最后一个查询返回 4 列,其他 3 列,
    2. 您在第二个查询中为列起别名,它不会产生任何影响,因为只有第一个 select 语句中的列名在结果集中可见。
    3. 从列名猜测你有不同的数据类型 你正在尝试联合。从您在 UNION 中使用的所有选择返回的数据类型应该返回相同的数据类型,例如
        SELECT Column1_DataType1, Column2_DataType2, Column3_DataType3 FROM Table_Name1
        UNION ALL
        SELECT Column1_DataType1, Column2_DataType2, Column3_DataType3 FROM Table_Name2
        UNION ALL
        SELECT Column1_DataType1, Column2_DataType2, Column3_DataType3 FROM Table_Name3
    

    等等....
    一旦你满足了所有这些条件,那么你可以做这样的事情来从你的结果集中消除重复的行

    ;with CTE 
    AS
     (
       SELECT ID_Column, rn = ROW_NUMBER() OVER (PARTITION BY Column1, Column2, Column3... ORDER BY ID ASC)
      FROM ( -- All of your UNION ALL Statements Can go here --)q
    )
    DELETE FROM CTE 
    WHERE rn = 1
    

    【讨论】:

    • 你好先生,这个想法是在这四个表中选择列然后转移到新表中,新表将作为我将显示的最终数据。现在我正在尝试使用插入忽略。所选列中的另一个问题,我有一个显示数据,我将在一个列中获得然后分成新列例如: col1: value:a|b|c 将变为 colA|科尔| colc 和等值的价格将是 a|b|c 的价格。我很难过。你能帮助我吗?我是一个新程序员。 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多