我想创建一个表来存储另一个查询的结果集。
我已经试过了:

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行
除非还指定了TOP,OFFSET或FOR XML,否则ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效。

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

最佳答案

只需从内部选择中删除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

关于sql-server - 如何在SQL Server中使用结果集创建表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39101012/

10-16 11:52