在临时表中选择distinct

时间:2016-05-19 05:06:12

标签: mysql sql

我试图在临时表中创建不同的数据,尝试使用create table #tabletemp来简化它仍然是错误的,它表示无法识别数据类型接近distinct和逗号或关闭括号预计在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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您必须先创建表,然后插入表中。对于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/

答案 2 :(得分:0)

您无需创建临时表来获取所需的结果。以下是基于您的查询的修订后的查询:

lastname = list()