2016-10-26 4 views
1

私はSQL Server 2008を使用しています。SQL Server 2008でデータをa-b形式で表示

私は、異なる番号、つまりintデータ型を持つテーブルを持っています。今度は、cast(a as varchar)+'-'cast(b as varchar)の形式、つまりa-bの形式で昇順にデータを表示するクエリが必要です。ここで、aはまだ表示されていない最小の番号であり、次にbが次に小さい番号です。

SQL Server 2012にこの問題を解決するlead関数があることは知っていますが、SQL Server 2008でこれを行うにはどうすればよいですか?中

+0

明確化:SQL Serverの8 == SQL Serverの2000 SQL Serverの12 == SQL Serverの2014リファレンス:https://sqlserverbuilds.blogspot.be/。人は通常、SQL Serverのビルドバージョンを参照するのではなく、製品名(SQL Server 2000,2005、...、2016)を参照します。 –

+0

{1,7,9,3}の入力セットの場合、結果{1-3,3-7,7-9}または{1-3,7-9}が欲しいですか? –

+0

ポイントを獲得しました。それはSQL Server 2008です。はい、私は{1-3,3-7,7-9} – rexroxm

答えて

1
CREATE TABLE #nr(nr INT); INSERT INTO #nr(nr)VALUES(9),(7),(1),(2),(25),(33),(10),(3); 

SELECT 
    CAST(n_o.nr AS VARCHAR)+'-'+CAST((SELECT MIN(n_i.nr) FROM #nr AS n_i WHERE n_i.nr>n_o.nr) AS VARCHAR) 
FROM 
    #nr AS n_o 
WHERE 
    (SELECT MIN(n_i.nr) FROM #nr AS n_i WHERE n_i.nr>n_o.nr) IS NOT NULL 
ORDER BY 
    nr; 

DROP TABLE #nr; 

結果:

╔══════════════════╗ 
║ (No column name) ║ 
╠══════════════════╣ 
║ 1-2    ║ 
║ 2-3    ║ 
║ 3-7    ║ 
║ 7-9    ║ 
║ 9-10    ║ 
║ 10-25   ║ 
║ 25-33   ║ 
╚══════════════════╝ 
+0

で答えが必要です。ありがとうTT。 – rexroxm

関連する問題