2016-07-14 19 views
0

データを列に挿入するには、次のコードを使用しますが、正しい列に読み込まない方法は間違っていますか?ストアドプロシージャから複数のテーブルに挿入する方法

ALTER PROCEDURE [dbo].[spTESt] 
AS 

DECLARE @Report TABLE (
    c1 int, c2 int, c3 int, c4 int, c5 int 
) 


INSERT INTO @Report (c1) 
SELECT mass as c1 FROM other_sales 
WHERE id='17501' order by mass 

INSERT INTO @Report (c2) 
SELECT mass as c2 FROM other_sales 
WHERE id='17154' order by mass 


INSERT INTO @Report (c3) 
SELECT mass FROM other_sales 
WHERE id='17156' order by mass 


INSERT INTO @Report (c4) 
SELECT mass FROM other_sales 
WHERE id='17500' order by mass 


INSERT INTO @Report (c5) 
SELECT mass FROM other_sales 
WHERE id='17501' order by mass 

条件に基づいて別の列に移動する必要があります。私はそれを別に構造化すべきですか?

+0

あなたはそれが何を意味しています正しい列に読み込まれませんか?これらの選択クエリ( 'SELECT mass FROM other_sales WHERE id = '17501'質量順)は常に単一の値を返しますか? – Ash

+0

私はそれを1行に表示したい – doe

+0

これはどのRDBMSですか? 'mysql'、' postgresql'、 'sql-server'、' oracle'、 'db2'のどれかを指定するタグを追加してください。 –

答えて

1
DECLARE 
     @Report TABLE (

c1 int , 
c2 int , 
c3 int , 
c4 int , 
c5 int 

    ) 

DECLARE @_C1 INT 
DECLARE @_C2 INT 
DECLARE @_C3 INT 
DECLARE @_C4 INT 
DECLARE @_C5 INT 

SELECT @_C1 = mass FROM other_sales 
WHERE id='17501' order by mass 

SELECT @_C2 = mass FROM other_sales 
WHERE id='17154' order by mass 

SELECT @_C3 = mass other_sales 
WHERE id='17156' order by mass 

SELECT @_C4 = mass other_sales 
WHERE id='17500' order by mass 

SELECT @_C5 = mass other_sales 
WHERE id='17501' order by mass 

INSERT INTO @Report 
     (c1, c2, c3, c4 , c5) 
VALUES (@_C1, -- c1 - int 
      @_C2, -- c2 - int 
      @_C3, -- c3 - int 
      @_C4, -- c4 - int 
      @_C5 -- c5 - int 
     ) 
+0

これは助けてくれてありがとう! – doe

-1

すべてselect文を想定すると、あなたの最後の列の宣言

DECLARE 
     @Report TABLE (

c1 int , 
c2 int , 
c3 int , 
c4 int 

    ) 
+0

私がここにそれを追加していたときに申し訳ありませんが、問題はありません。 – doe

+0

Lol ok、心配はありません、何が問題ですか?複数の行ではなく、これらの値を1行に表示しますか? –

+0

ええ!それは、私はそれが行に表示されたい、しかし今すぐその場所に行く – doe

2

が値をreturnsingleした後、次のように、あなたは、単一のステートメントを試みることができる、コンマを削除します。

ALTER PROCEDURE [dbo].[spTESt] 
AS 
--...... 
DECLARE @Report TABLE (c1 int, c2 int, c3 int, c4 int, c5 int) 

INSERT INTO @Report (c1, c2, c3, c4, c5) values (
(SELECT mass FROM other_sales WHERE id='17501'), 
(SELECT mass FROM other_sales WHERE id='17154'), 
(SELECT mass FROM other_sales WHERE id='17156'), 
(SELECT mass FROM other_sales WHERE id='17500'), 
(SELECT mass FROM other_sales WHERE id='17501')) 
--.... 
+0

ありがとう、これも助けて – doe

関連する問題