Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在sql server中使用结果集创建表_Sql Server - Fatal编程技术网

Sql server 如何在sql server中使用结果集创建表

Sql server 如何在sql server中使用结果集创建表,sql-server,Sql Server,我想创建一个表来存储另一个查询的结果集 我试过这个: create table avgcost_product ( name varchar(50), productnumber varchar(50), averagecost money ) 创建表后,我尝试了以下查询: INSERT into avgcost_product SELECT * FROM (SELECT p.[Name], p.ProductNumber, CONVERT(v

我想创建一个表来存储另一个查询的结果集

我试过这个:

create table avgcost_product (
    name varchar(50),
    productnumber varchar(50),
    averagecost money
)
    
创建表后,我尝试了以下查询:

INSERT into avgcost_product SELECT * FROM
(SELECT p.[Name], p.ProductNumber,
        CONVERT(varchar, cost.AvgCost,1) as 'Average Cost'
FROM Production.Product p
CROSS APPLY fnGetAvgCost(p.ProductID) as cost
WHERE cost.AvgCost IS NOT NULL
ORDER BY cost.AvgCost desc)
但它显示了如下错误:

消息1033,第15级,状态1,第284行

ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP、OFFSET或FOR XML


如何在表中写入所需数据?

只需从内部选择中删除
ORDER BY
,或者您甚至可以进一步简化查询:

INSERT into avgcost_product 
SELECT p.[Name]
       , p.ProductNumber
       , CONVERT(varchar, cost.AvgCost,1) as 'Average Cost'
FROM Production.Product p
CROSS APPLY fnGetAvgCost(p.ProductID) as cost
WHERE cost.AvgCost IS NOT NULL

您还可以使用以下方法动态创建表格:


是的,它告诉你,
orderby
是没有意义的。表没有任何固有的顺序。只需补充一下。SQL按定义不按特定顺序存储数据。这就是为什么在实际检索数据时,如果您确实希望按特定顺序检索数据,那么使用orderby非常重要的原因。
SELECT  p.[Name], 
        p.ProductNumber,
        CONVERT(varchar, cost.AvgCost,1) as [Average Cost] 
INTO avgcost_product
FROM Production.Product p
CROSS APPLY fnGetAvgCost(p.ProductID) as cost
WHERE cost.AvgCost IS NOT NULL