2012-03-07 9 views
0

[OK]私はストアドプロシージャについてはよく分かりませんが、どのようにこれをSPとして書くことができるか知っています。私はそれがちょっとそこに着いていると思うが、それほどではない。基本的に私はそれを作成するために、私のクエリに貼り付けるために何が必要になります:)ストアドプロシージャCreate Prob

CREATE PROCEDURE sp_executesql 
as 
DECLARE 
@cols AS NVARCHAR(MAX), 
@y AS INT, 
@sql AS NVARCHAR(MAX); 

-- Construct the column list for the IN clause 
SET @cols = STUFF(
(SELECT N',' + QUOTENAME(w) AS [text()] 
FROM (SELECT DISTINCT WeekNo AS W FROM dbo.Items) AS W 
ORDER BY W 
FOR XML PATH('')), 
1, 1, N''); 


-- Construct the full T-SQL statement 
-- and execute dynamically 
SET @sql = N'SELECT * 
      FROM (SELECT ItemNo, WeekNo, Value 
        FROM dbo.Items) AS I 
      PIVOT(SUM(Value) FOR WeekNo IN(' + @cols + N')) AS P;'; 

EXEC sp_executesql @sql; 
GO 

答えて

0

それはこのようになりますクエリステートメントが正しく、あなただけのSPの構造を必要とすると仮定すると:!

はPROCEDURE SP_NAME のCREATE @変数1タイプ[入力/出力] としてSP EXEC SP_NAME 'valueForVariable1'

01を実行する --query端

//を開始

これが役に立ちます

0

これが判明しました。証明する名前をsp_executesqlにするのではなく、get_itemsなどの名前を付けてください。

新しい手順:

CREATE PROCEDURE get_items 

as 
declare @cols AS NVARCHAR(MAX), 
@y AS INT, 
@sql AS NVARCHAR(MAX) 

SET @cols = STUFF((SELECT N',' + QUOTENAME(w) AS [text()] 
FROM (SELECT DISTINCT week_no AS W FROM weekly_items) AS W 
ORDER BY W 
FOR XML PATH('')),1, 1, N''); 

SET @sql = N'SELECT * 
FROM (SELECT item_no, week_no, totval 
FROM weekly_items) AS I 
PIVOT(SUM(totval) FOR week_no IN(' + @cols + N')) AS P;'; 

EXEC sp_executesql @sql 

GO 
関連する問題