【问题标题】:Select distinct in temp table在临时表中选择不同的
【发布时间】:2016-05-19 05:06:12
【问题描述】:

我试图在临时表中创建不同的数据,试图用创建表来简化它#tabletemp 仍然出错,它说无法识别接近不同的数据类型,并且在 ponumber 附近需要逗号或右括号

代码如下:

CREATE TEMPORARY TABLE t1(
SELECT DISTINCT
  PONumber varchar(10),
  POdate varchar(10),
  customername varchar(35),
  description varchar(22)
  FROM tb_po
);

SELECT
  p.PONumber,
  p.podate,
  p.customername,
  p.description,
  (
    SELECT SUM(q.deliveryqty)
    FROM tb_spb q
    WHERE p.PONumber = q.PONumber AND p.description = q.description
  ) AS Total
  FROM t1 p

【问题讨论】:

  • 你想要什么?请添加简单的输入输出
  • 是MySql还是Sql server?这是两种不同的产品。
  • mysql,抱歉打错标签,我会编辑它
  • @shamimreza 这是我在这里输入时间太长的主要问题stackoverflow.com/questions/37293592/…

标签: mysql sql


【解决方案1】:

如果您确实需要将它放在临时表中,另一种方法是使用“SELECT INTO”,您无需声明创建临时表。 (虽然创建表然后插入记录是更优选的方法https://stackoverflow.com/a/6948850/6344844

SELECT DISTINCT
      p.PONumber,
      p.POdate,
      p.customername,
      p.[description],
      SUM(q.deliveryqty)
INTO #TEMPTABLE_NAME
FROM tb_po p
INNER JOIN tb_spb q 
    ON p.PONumber = q.PONumber 
    AND p.description = q.description
GROUP BY p.PONumber,p.POdate,p.customername,p.[description]

SELECT * FROM #TEMPTABLE_NAME

DROP TABLE #TEMPTABLE_NAME

【讨论】:

    【解决方案2】:

    您无需创建临时表即可获得所需的结果。这是我根据您的查询修改后的查询:

    SELECT DISTINCT
      p.PONumber,
      p.POdate,
      p.customername,
      p.[description],
      SUM(q.deliveryqty)
    FROM tb_po p
        INNER JOIN tb_spb q 
            ON p.PONumber = q.PONumber 
            AND p.description = q.description
    GROUP BY p.PONumber,p.POdate,p.customername,p.[description]
    

    【讨论】:

    • 它工作得很好,谢谢 :) 我只是在根据不同表上的 2 列进行分组之前感到困惑 :)
    【解决方案3】:

    您必须先创建表格,然后插入表格。对于 SQL server 你可以这样做。

     CREATE TABLE TEMPORARY(
     PONumber varchar(10),
     POdate varchar(10),
     customername varchar(35),
     description varchar(22)
     );
    
    insert into TEMPORARY SELECT DISTINCT
    PONumber varchar(10),
    POdate varchar(10),
    customername varchar(35),
    description varchar(22)
    FROM
     tb_po ;
    

    如果你想在 SQL Server 中创建临时表,那么你必须在表名前使用 #。 供参考http://www.c-sharpcorner.com/uploadfile/b19d5a/temporary-and-global-temporary-table-in-sql-server-2008/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多