2
所以,我有這個數據存在於一個列中。奇數行是ID,偶數行是城市。有沒有辦法將它分成兩列?如何僅基於行號將單列表轉換爲多列?
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我也喜歡SO。我每天都會學到新的東西。這是有趣的部分 –