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