相关疑难解决方法(0)

如何对SQL存储过程的col结果求和

我有一个存储过程,结果如下:

Governors   AUTO    07313570121     1   3.69    2.01    2.01    1.68    83.58%
Governors   AUTO    07319354850     1   2.79    1.8     1.80    0.99    55.00%
Governors   AUTO    07480400400     1   17.69   9.71    9.7117  7.9783  82.15%
Governors   AUTO    07723100038     1   2.89    1.55    1.55    1.34    86.45%
Governors   BEER    01820000031     6   4.69    23.34   3.888   0.8     20.57%
Governors   BEER    01820000051     6   4.69    23.34   3.888   0.802   20.63%
Governors   BEER    01820000106     1   6.39    4.93    4.93    1.46    29.61%
Run Code Online (Sandbox Code Playgroud)

我想总结一下:

 Governors   AUTO  4  27.06  15.07  
 Governors   AUTO  13 13.07  51.61
Run Code Online (Sandbox Code Playgroud)

sql stored-procedures

5
推荐指数
1
解决办法
4512
查看次数

从Sql Server 2000上的存储过程插入临时表

我正在努力完成这里描述的内容:

http://sqldev.wordpress.com/2008/05/06/insert-into-temporary-table-from-stored-procedure/

文章说(通过评论支持)这适用于SQL Server 2000但可能不那么容易.

这在2008年之前有点棘手 - 事实证明,在SQL Server 2008中,这可以轻松完成.

和评论说:

这不是2008年的特色.它是在那里,因为我记得...从SQL Server 2000?无论如何,这是一个很棒的功能!

如何快速完成SQL Server 2000的此操作?

使用文章所基于的代码,我收到以下错误消息:

Msg 197, Level 15, State 1, Line 7
EXECUTE cannot be used as a source when inserting into a table variable.
Run Code Online (Sandbox Code Playgroud)

我确实找到了这个Stackoverflow帖子,它也支持这个可以在SQL Server 2000中完成的概念,但是这篇文章是为了解决SQL Server 2005而且它没有进入2000多.

sql-server stored-procedures insert

4
推荐指数
1
解决办法
1万
查看次数

SQL Server - OPENQUERY

我正在使用一个在SQL Server 2005上运行良好的Openquey,我有一台服务器是SQL Server 2008,但这不起作用.

如果我运行以下内容:

SELECT * 
FROM OPENQUERY([Manchester], 
      '[Manchester].[PilotWebApp].[DBO].rsp_HandheldPerformance ''10/01/2009'', 
      ''10/10/2009''')
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Cannot process the object "[Manchester].[PilotWebApp].[DBO].rsp_HandheldPerformance '10/01/2009', '10/10/2009'". 
The OLE DB provider "SQLNCLI" for linked server "Manchester" indicates that either the object has no columns or the current user does not have permissions on that object.
Run Code Online (Sandbox Code Playgroud)

如果我只是运行:

[Manchester].[PilotWebApp].[DBO].rsp_HandheldPerformance '10/01/2009', '10/10/2009'
Run Code Online (Sandbox Code Playgroud)

它工作正常.2008年发生了什么变化?

它的作用是从openquery获取数据并插入到我的临时表中:

INSERT #TempHandheldPerformance SELECT * FROM OPENQUERY([Manchester], '[Manchester].PilotWebApp.DBO.rsp_HandheldPerformance ''10/01/2009'', ''10/10/2009''')
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2005 sql-server-2008

4
推荐指数
1
解决办法
8864
查看次数

如何从存储过程返回COUNT?

我在SQL中有一个存储过程,我无法更改.它需要很少的输入参数,并返回一个包含100多行和多列的表.

exec dbo.Select_Data 0, 0, 18, 50
Run Code Online (Sandbox Code Playgroud)

我需要一些东西来计算返回的行:

select count(*) from (exec dbo.Select_Data 0, 0, 18, 50)
Run Code Online (Sandbox Code Playgroud)

以及从名称列中获取值的方法:

select Id, Name from (exec dbo.Select_Data 0, 0, 18, 50) where Id=10
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

sql-server stored-procedures return count sql-server-2008

4
推荐指数
1
解决办法
1万
查看次数

如何从存储过程中将多个输出捕获到临时表中

我的存储过程返回两个输出.我想在另一个存储过程中使用其中一个.所以试图在临时表中获取第二个输出.但由于两个输出的结构不同,因此我总是得到"列名或提供的值的数量与表定义不匹配".

即使我改变输出的顺序(第一个输出第二个和第二个输出第一个),它也不起作用.

我正在建立一个全新的应用程序,我需要再次在另一个存储过程中使用存储过程.如果我遇到这种情况,我可能需要重写很多代码.

有一个非常好的问题,但这只涵盖一个输出.

将存储过程的结果插入临时表

谢谢

sql t-sql sql-server sql-server-2008

4
推荐指数
1
解决办法
4661
查看次数

从 sp_executsql INSERT INTO 临时表

一般来说,我构建使用 sp_executsql 执行的动态 SQL 语句,如下所示:

EXEC sp_executesql @TempSQLStatement 
Run Code Online (Sandbox Code Playgroud)

我需要将返回结果行集插入某些内容(表变量或临时表),但出现以下错误:

Msg 208, Level 16, State 0, Line 1746
Invalid object name '#TempTable'.
Run Code Online (Sandbox Code Playgroud)

执行此操作后:

INSERT INTO #TempTable
EXEC sp_executesql @TempSQLStatement 
Run Code Online (Sandbox Code Playgroud)

根据我所读到的内容,我认为问题是由于我没有指定临时表的列而引起的,但我无法执行此操作,因为返回列数有所不同。

我读过我可以使用全局临时表,但我之前已经这样做过,想知道是否还有其他方法可以做到这一点。

t-sql temp-tables sp-executesql global-temp-tables

4
推荐指数
1
解决办法
1万
查看次数

SQL Server 中的 R:将数据框输出到表中

这可能有一个简单的答案,但我无法弄清楚,因为我仍然掌握在 SQL Server 中使用 R 的窍门。我有一段代码从 SQL Server 表中读取数据,在 R 中执行并返回一个数据框。

execute sp_execute_external_script
    @language=N'R',
    @script=N'inp_dat=InputDataSet
    inp_dat$NewCol=max(inp_dat$col1,inp_dat$col2)
    new_dat=inp_dat
    OutputDataSet=new_dat'
    @input_data_1=N'select * from IM_COMP_TEST_SQL2016.dbo.temp_table';
Run Code Online (Sandbox Code Playgroud)

我想将 new_dat 插入 SQL Server 表 ( select * into new_table from new_dat)。我该怎么做?

sql sql-server r sql-server-2016

3
推荐指数
1
解决办法
6130
查看次数

无法将过程存储到动态临时表中

我有一个返回列的存储过程.出于功能原因,该存储过程主要由其他查询使用

所以我的存储过程:

IF OBJECT_ID ( 'dbo.ProcDim', 'P' ) IS NOT NULL 
    DROP PROCEDURE dbo.ProcDim;
GO
CREATE PROCEDURE dbo.ProcDim
                            @Dim1 nvarchar(50), 
                            @Dim2 nvarchar(50) 
AS 
    SET NOCOUNT ON;
    IF OBJECT_ID('tempdb..#TMP1') IS NOT NULL
    DROP TABLE #TMP1

    SELECT  
    INTO    #TMP1           
    FROM  DBase.dbo.Table1  AS Parameter
    WHERE Parameter.Dim1    = @Dim1 
    AND   Parameter.Dim2    = @Dim2;
GO

EXECUTE dbo.ProcDim N'value1', N'value2';
SELECT * from #TMP1
Run Code Online (Sandbox Code Playgroud)

所以当我执行我的程序没有#TMP1工作正常但我想将结果插入临时表

sql t-sql sql-server stored-procedures

2
推荐指数
1
解决办法
618
查看次数

如何将动态SQL插入临时表?

我有此动态查询,如何将其结果插入到临时表中?该查询的结果显示为,(1000 row(s) affected) 但是有没有机会将这1000行转储到临时表中?

像这样:

INSERT INTO #TempTable
EXEC(@query)
Run Code Online (Sandbox Code Playgroud)

这是我的查询

DECLARE @cols AS NVARCHAR(MAX),
        @query  AS NVARCHAR(MAX)

SET @cols =     STUFF((SELECT  ',' + QUOTENAME(c.locationCode) 
     FROM Catalytic_vw_LocationCodeByLine c WHERE c.linename ='wind' order by c.CompanyName, c.LocationCode
     FOR XML PATH('')),1,1,'')

set @query = 
                'select *  into ##Temp
                from 

                (SELECT  QUOTEGUID as qguid, ' + @cols + ' from   
                        (
                            select 
                                    QuoteGUID, 
                                    LocationCode, 
                                    LineName,
                                    LineGUID
                            from Catalytic_vw_PolicyLocationCode 
                       )  x
                        pivot 
                        (
                             max(locationCode)
                            for locationCode in (' + @cols + ')
                        )p)x'

EXEC sp_executesql …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server pivot

2
推荐指数
2
解决办法
6882
查看次数

如何在插入语句内调用函数/过程

如何在没有命令参数的情况下在插入语句内调用函数/过程。例如

Insert into myTable (....) values (1,2,mySP_or_mySDF, 3,4)
Run Code Online (Sandbox Code Playgroud)

sql sql-server

1
推荐指数
1
解决办法
2万
查看次数

使用 OPENROWSET、OPENQUERY 为数据访问配置 SQL Server 实例

我在运行 Windows 7 x-64 的独立非联网开发 PC 上安装了 SQL Server 2012 完整版。假设 FOO 是我的 PC 的名称,而我的 SQL Server 命名实例是 FOO\SQL2012。

我正在尝试按照此处的示例进行操作,这些示例展示了如何使用存储过程作为数据源创建新的临时表。

我想执行这些查询中的任何一个,但我收到了显示的错误。

   SELECT * into #temp FROM OPENQUERY("FOO\SQL2012", 'exec MySchema.MyStoredProc')

   **ERROR: Server 'FOO\SQL2012' is not configured for DATA ACCESS.**
Run Code Online (Sandbox Code Playgroud)

或此查询:

  SELECT * INTO #temp FROM OPENROWSET('SQLNCLI', 'Server=(local)\SQL2012;Trusted_Connection=yes;',
 ' EXEC MySchema.MyStoredProc')

 **ERROR: Msg 11529, Level 16, State 1, Procedure sp_describe_first_result_set, Line 1
Run Code Online (Sandbox Code Playgroud)

无法确定元数据,因为每个代码路径都会导致错误;请参阅其中一些以前的错误。**

我将如何配置 SQL Server 实例以允许当前经过身份验证的用户(无论它可能是谁)对本地实例使用 OPENROWSET、OPENQUERY?

通过 Windows 进行身份验证的用户和通过 SQL Server 进行身份验证的用户是否需要这些查询的单独版本?

windows-authentication sql-authentication openquery openrowset sql-server-2012

1
推荐指数
1
解决办法
2万
查看次数

将存储过程结果从 NULL 转换为 0

我有临时表接受执行存储过程的结果集。我无法更改存储过程。sp 在某些行中返回空列,但我想在将它们插入临时表时将 NULL 转换为 0。如何轻松做到呢?

我的 SQL 是这样的:

Insert into #temp (co1, co2, co3)
exec sp_xxx
Run Code Online (Sandbox Code Playgroud)

sp_xxx 中的 co3 可能为 NULL,但我想将其转换为 0 并存储在 #temp.col3 中

sql sql-server

1
推荐指数
1
解决办法
2946
查看次数

SQL连接表与存储过程的输出

我想用表格加入存储过程的输出.我知道,我确信这是可能的,因为我之前做过但是,我不记得如何.有人可以帮我吗,拜托?

sql

0
推荐指数
1
解决办法
2978
查看次数