0

カード番号のセットを追加したい顧客データベースがあります。表には同じ列が複数ありますが、カード番号は完了するまで1ずつ増えていきます。たとえば、他の列と同じギフトカード1〜250を追加したいので、次のようにします。

Cardnum      price    booktype   service 
1             9.99       1         12 
2             9.99       1         12
3             9.99       1         12

などなど...これはcardnumが「250」になるまで繰り返されます。SQLクエリでこれを行うことは可能ですか?

ありがとう。

4

4 に答える 4

1

テーブルはすでに存在するので、これを試してください。

DECLARE @book INT
SET @book = 810041
WHILE (@book) < 810291
BEGIN
    INSERT INTO tableName
    VALUES(@book,9.99,1,12)
    SET @book = @book +1
END

SQL-Server 2005以降を使用していて、このテーブルを最初から作成したい場合は、次のようにします。

 CREATE TABLE [dbo].[#books](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [price] decimal(6,2) NULL,
        [bookType] [int] NULL,
        [service] [int] NULL)

    INSERT INTO #books
    VALUES(9.99,1,12)
    GO 250
于 2012-06-12T02:51:10.580 に答える
1

まず、cardnum を「identity」として作成します (シード値は 1 になります)。次に、1 から 250 までの while ループで、残りの 3 つの列の挿入ステートメントを記述します。自分でコードを書いていただけると幸いです。

于 2012-06-12T02:41:57.870 に答える
1

これを実現するには、ストアド プロシージャを作成する必要があり、コードは次のようになります。

declare @cnt int

set @cnt = 0
while(@cnt < 250)
begin
insert into dbo.xxx(price, booktype, servic) 
values(9, 1, 12)

set @cnt = @cnt + 1
end
于 2012-06-12T03:01:30.413 に答える
0

@jimdrang はすでに答えを提供していますが、私は CREATE TABLE とストアド プロシージャを使用して完全な例を完成させたところだったので、今後これを探している人の利益のために投稿したほうがよいと思います。

CREATE TABLE Cards
(
  Cardnum int not null primary key,
  price money not null,
  booktype int not null,
  service int not null
);
GO

CREATE PROCEDURE [dbo].[sp_AddCards] (
  @Price money,
  @BookType int,
  @Service int,
  @NumCards int,
  @StartNum int
)
  AS
BEGIN
  DECLARE @CurCard int
  SELECT @CurCard = @StartNum

  WHILE @CurCard < @StartNum + @NumCards
  BEGIN
    INSERT INTO Cards (Cardnum, price, booktype, service)
    VALUES (@CurCard, @Price, @BookType, @Service)

    SELECT @CurCard = @CurCard + 1
  END
END

GO

EXEC sp_AddCards @Price=9.99, @BookType=1, @Service=12, @NumCards=250, @Startnum=810041;

SELECT * FROM Cards;

DROP TABLE Cards;
DROP PROCEDURE sp_AddCards;

それが役に立てば幸い!

于 2012-06-12T03:35:08.820 に答える