次のような文字列形式の数値のリストがあります。
1-1
1-11
1-12
1-2
1-21
1-2-31
以下の形式で出力されるようにソートしたいと思います。
1-1
1-2
1-2-31
1-11
1-12
1-21
この並べ替えはHiveで行う必要があります。どうすればこれを達成できますか?
このように試してください:
まず、宣言されたテーブル変数をテストシナリオの**モックアップ*として使用します。
CTEは、ハイフンで数字をカットします。次に、両方の部分で別々に数値ソートを使用します。
DECLARE @tbl TABLE(StringNumber VARCHAR(10));
INSERT INTO @tbl VALUES
('1-1')
,('1-2')
,('1-11')
,('1-12')
,('1-21');
WITH Parted AS
(
SELECT LEFT(StringNumber,pos.Hyph-1) AS PartOne
,SUBSTRING(StringNumber,pos.Hyph+1,1000) AS PartTwo
,StringNumber
FROM @tbl AS tbl
CROSS APPLY(SELECT CHARINDEX('-',StringNumber) ) AS Pos(Hyph)
)
SELECT * FROM Parted
ORDER BY CAST(PartOne AS INT),CAST(PartTwo AS INT)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加