在sql server 2008中以a-b格式显示数据

时间:2016-10-26 10:37:58

标签: sql-server sql-server-2008 tsql

我正在使用SQL Server 2008.

我有一个表有不同的数字,即int数据类型。现在我需要一个查询,以cast(a as varchar)+'-'cast(b as varchar)格式a-b的格式递增显示数据,其中a是尚未显示的最小数字,b随后是lead下一个最小数字。

我知道SQL Server 2012具有DECLARE @Amt Float DECLARE @Tax Float DECLARE @Qty TINYINT SET @Amt=70.96 SET @Tax=5.26 SET @Qty=1 SELECT ROUND((@Amt-@Tax)/@Qty, 2,1) 功能,这会使这个问题没什么问题,但我该如何在sql server 2008上做到这一点?

1 个答案:

答案 0 :(得分: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            ║
╚══════════════════╝