【问题标题】:How to Insert Select Query Results into a Table with a Stored Procedure如何将选择查询结果插入到带有存储过程的表中
【发布时间】:2020-04-02 12:33:29
【问题描述】:

我想将查询结果添加到另一个表中,该表仅用于通过存储过程收集一些统计信息。

这是我实现的:https://sqltest.net/#926688

但是结果集是空的,我不知道为什么。

Table: SurveyData
ID|Variable1|Variable2
 1|        3|        4
 2|        2|        4
 3|        5|        1

对于存储过程,我想计算变量的值,以防它们是 4 或 5,并将结果放入另一个名为 Upper_Values 的表中

结果应该是这样的

Table: Upper_Values
ID|Var1count|Var2Count
1 |        1|        2
2 | ...

为此我写的SP是:

GO
CREATE PROCEDURE Put_Values
AS
BEGIN
    SET NOCOUNT ON
    INSERT INTO Upper_Values(Var1Count, Var2Count)
    Select count(Variable1) as Var1Count, count(Variable2) as Var2Count from surveyData
END

谁能帮我完成这项工作?

【问题讨论】:

  • 我不确定这里有什么问题或问题
  • 样本数据最好使用DDL + DML。请edit你的问题包括它,你当前的尝试和你想要的结果。
  • 我已经调整了testsql脚本。

标签: sql-server tsql stored-procedures insert


【解决方案1】:

我修改了你的代码,让它可以运行。

CREATE TABLE sql_server_test_a 
( 
    ID         NVARCHAR(4000), 
    FIRST_NAME NVARCHAR(200), 
    LAST_NAME  NVARCHAR(200) 
); 

INSERT INTO sql_server_test_a (ID, FIRST_NAME, LAST_NAME) VALUES ('1', 'Paris', 'Hilton'); 


CREATE TABLE sql_server_test_b
( 
    FIRST NVARCHAR(200),
    LAST NVARCHAR(200)
);
GO
CREATE PROCEDURE Put_First
AS
BEGIN
    SET NOCOUNT ON
    INSERT INTO sql_server_test_b(FIRST, LAST)
    Select FIRST_NAME as FIRST, LAST_NAME as LAST from sql_server_test_a
END
GO

EXEC Put_First;

SELECT * from sql_server_test_b

【讨论】:

  • 感谢您的回复!将它放入 testsql 会给我一个空数据集作为我更新的查询。你能提供一个testsql或类似的链接吗?
  • 我在 SSMS 中对其进行了编辑。将其复制并粘贴到那里,它将按预期工作。我还将您的新示例复制到 SSMS 中,它工作得很好,所以我认为问题出在 testsql 上。
猜你喜欢
  • 2013-09-24
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 2013-10-19
  • 2017-12-12
  • 2015-03-05
  • 2018-11-16
相关资源
最近更新 更多