有两张表,A和B,其中A.name和B.name列名的值相等,但是“A.name和B.name排序不一样”
现在两张表需要连接成一张表,取A表和B表的所有字段,按照A.name的字段的顺序来排序,
但是最关键的一点是“必须保持A.name的排序顺序不变”。意思就是保持原先A表中name字段的顺序。
而且A.name中的字段还有空格,每行的空格数目不等,这些空格也要保留。下面我尝试写了一段,但是根本得不到预期的结果:
select t.name,f.name,f.other from A t inner join B f
on ltrim(rtrim(t.name))=f.name
order by ltrim(rtrim(t.name)) asc
请高手来帮帮忙,我想了好几天了,一点头绪都没有
现在两张表需要连接成一张表,取A表和B表的所有字段,按照A.name的字段的顺序来排序,
但是最关键的一点是“必须保持A.name的排序顺序不变”。意思就是保持原先A表中name字段的顺序。
而且A.name中的字段还有空格,每行的空格数目不等,这些空格也要保留。下面我尝试写了一段,但是根本得不到预期的结果:
select t.name,f.name,f.other from A t inner join B f
on ltrim(rtrim(t.name))=f.name
order by ltrim(rtrim(t.name)) asc
请高手来帮帮忙,我想了好几天了,一点头绪都没有
A.name和B.name中存放都都是字符串,15-30个字符每行。
可能我的意思表达的有点混乱,但大概就是上面的意思。
on ltrim(rtrim(t.name))=f.name
order by ltrim(rtrim(t.name)) asc
--猜的,试试
所以就取了A.name来,凑合着看。实际B表中和A表对应的name字段书序肯定不一样的。1TAS.710.10140
5TAS.516.10019.01
5TAS.517.10133.01
M0502010002
5TAS.384.10147.01
5TAS.022.10035.04
W0107080012
T46060009
GB5783-M20X55-133
GB97.1-20-113
GB97.1-20-113
GB97.1-20-113
GB93-20-153
on ltrim(rtrim(t.name))=f.name
还是不大明白
因为A.name字段中的内容还有空格,所以on的条件中要去掉空格来比较。
on ltrim(rtrim(t.name))=f.name
order by ltrim(rtrim(t.name)) ascselect t.name,f.name,f.other from A t left join B f
on t.name=f.name
order by t.name asc
A表中每行前面都有一个空格的缩进,实际输出时还想把缩进增大,以增加可读性。
下面的是重新提取的,A、B表中的name字段内容:
谢了,高手们。--A表中的name字段
W0107020010
W0105070003
8TAS.055.10034.02
M0401100503
W0101060003
W0105010002
W0106040003
M0406030001
W0107080012
M0101010002
M0401070328
W0105010001
M0401170502
W0124010005
W0111020034
5TAS.022.10035.04
M0104010008
W0107020001
W0112010002
M0502010002
W0105070001
8TAS.770.10215.01
W0104010005
W0108030002
1TAS.710.10140ZC
8TAS.860.10027.05
W0115010001
W0107090017 --B表中的的name字段
M0401100503
W0107090017
W0104010005
W0101060003
5TAS.022.10035.04
M0401170502
W0105070003
W0112010002
M0101010002
W0115010001
W0105070001
W0111020034
W0108030002
W0105010002
W0107020001
8TAS.860.10027.05
W0107020010
W0107080012
W0105010001
M0406030001
W0106040003
8TAS.055.10034.02
8TAS.770.10215.01
M0401070328
M0502010002
M0104010008
1TAS.710.10140ZC
W0124010005
on ltrim(rtrim(t.name))=f.name