我正在使用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上做到这一点?
答案 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 ║
╚══════════════════╝