したがって、このデータは1つの列にあります。奇数行はID、偶数行は都市です。これを2つの列に分割する方法はありますか?行番号だけに基づいて、単一の列テーブルを複数の列に変換するにはどうすればよいですか?
DECLARE @Data TABLE (
DataRow NVARCHAR(50)
)
INSERT INTO @Data VALUES
('1' )
, ('Albuquerque' )
, ('2' )
, ('Boston' )
, ('3' )
, ('Chicago' )
, ('4' )
, ('Dayton' )
, ('5' )
, ('Eumenclaw' )
, ('6' )
, ('Fresno' )
私は次のコードを使用していますが、ピボットテーブルを使用すると効率的な方法があるようです。
DECLARE @DataID TABLE (
ID INT IDENTITY
, DataRow NVARCHAR(50)
)
INSERT INTO @DataID
SELECT * FROM @Data
DECLARE @CityData TABLE (
ID INT
, City NVARCHAR(100)
)
DECLARE @Counter INT = 0
, @ID INT
, @City NVARCHAR(50)
WHILE @Counter < (SELECT MAX(ID)/2 FROM @DataID WHERE ID%2 = 0)
BEGIN
SET @Counter += 1
SET @ID = (SELECT CAST(DataRow AS INT) FROM @DataID WHERE ID = @Counter * 2 - 1)
SET @City = (SELECT DataRow FROM @DataID WHERE ID = @Counter * 2)
INSERT INTO @CityData
SELECT @ID, @City
END
SELECT * FROM @CityData
結果:
ああ、スペルミスのためにワシントンからあなたのものに謝罪。そしてうまくいけば、ニューメキシコではない。
うわー。私はここで常に心と専門知識によって吹き飛ばされています。それは本当に信じられないほどです。私はそれを修正しました(実際のデータはここに掲載することはできませんので、逸話を使っています)。私が持っているデータは完全に予測可能なので、IDにMOD関数を使うことができます。しかし、あなたが私に必要なものをくれたので、ありがとう。ブリリアント。 – DaveX
@DaveXハッピーに助けられました:) –
@DaveXあまりにも大好きです。私は毎日何か新しいことを学びます。それは楽しい部分です –