我尝试根据名为DisplayOrder的列输出值,该列包含以下值:
1.1
1.2
2.3
2.1
2.2
5.2
5.3
5.1
我需要根据它在另一个表格中的位置输出这些数字,这些数字的值不是这样的:
2
5
1
我希望按照第二个表中的位置顺序输出顶部表中的值,但是按照十进制值的顺序输出:
2.1
2.2
2.3
5.1
5.2
5.3
1.1
1.2
到目前为止,我已尝试插入临时表,其中数字的第一部分按此顺序排列:
INSERT INTO #Temp
SELECT DisplayOrder
FROM Questions
WHERE DisplayOrder LIKE @Search
上面的代码循环通过表2,它将单个值分配给@Search +。%以获得带小数开头的所有值。
我读了一些其他帖子,他们提到当插入数据时,它的顺序基本上会丢失,应该在选择输出时获得。
答案 0 :(得分:0)
Declare @T1 table (nval money)
Insert into @T1 values
(1.1),
(1.2),
(2.3),
(2.1),
(2.2),
(5.2),
(5.3),
(5.1)
Declare @T2 table (RowNr int,nval money) -- Make RowNr and Identity(int)
Insert into @T2 values
(1,2),(2,5),(3,1)
Select A.*
From @T1 A
Join @T2 B on floor(a.nval)=B.nval
Order By B.RowNr,A.nval
返回
nval
2.10
2.20
2.30
5.10
5.20
5.30
1.10
1.20
答案 1 :(得分:0)
不幸的是,你没有展示你的桌子。让我们说它们看起来像这样:
表格数据
value 1.1 1.2 2.3 2.1 ...
表格数据库
intvalue displayorder 2 1 5 2 1 3 ...
加入表格并先按displayorder订购,之后再加价:
select
from data
join datasort on datasort.intvalue = trunc(data.value)
order by datasort.displayorder, data.value;