【发布时间】:2016-08-30 10:29:40
【问题描述】:
更新 首先我用过滤器 id 尝试这个 sp
select Row_number()
OVER(ORDER BY (SELECT 1)) AS 'RowNumber',
vf.*
from login ld,
veh vf where
(ld.fid=vf.fid)
and ld.id = '0257'
and ld.id <> 'NA'
and vf.CustID <> 'None'
and vf.Simo <> 'None'
Order by Row_number() OVER(ORDER BY (SELECT 1))
这个显示结果是这样的
RowNumber FID Oid CustID DID Simo RNo
1 166 MT255 M2522 1368 LM00 LE270
现在当我删除过滤器 ld.id 并尝试此操作时
select Row_number() OVER(ORDER BY (SELECT 1)) AS 'RowNumber',
vf.*
from login ld,
veh vf where
(ld.fid = cast(vf.fid as varchar(max)))
and ld.id <> 'NA'
and vf.CustID <> 'None'
and vf.SimNo <> 'None'
Order by Row_number() OVER(ORDER BY (SELECT 1))
然后这个显示多个结果
RowNumber FID Oid CustID DID Simo RNo
1 166 MT255 M2522 1368 LM00 LE270
2 166 MT255 M2522 1368 LM00 LE270
3 166 MT255 M2522 1368 LM00 LE270
当我删除它时
(ld.fid = cast(vf.fid as varchar(max)))
然后写这个
(ld.fid=vf.fid)
然后这个显示错误 将 varchar 值 'none' 转换为数据类型 int 时转换失败。
更新
当我select * from Login where iD='0257'
那么
ID FID
0257 166
当我尝试
select * from Login where FID='166'然后
ID FID
0257 166
022 166
0258 166
和select * from Vehicle where FID='166'
FID Oid CustID DID Simo RNo
166 MT255 M2522 1368 LM00 LE270
【问题讨论】:
-
为什么你加入的字段有不同的类型?
-
您的行号使独特的无用。 Distinct 会遗漏任何重复记录,但您的行号表明您没有重复记录
-
但是当我检查时表@GuidoG中只有记录
-
我认为这部分有问题.. (ld.fid = cast(vf.fid as varchar(max))) 如果我们想将 ld.fid 转换为 int 那么我该怎么做..
-
是的,但是您已将表登录与表 veh 连接起来,因此对于登录中的每条记录,您的查询将获取 veh 中的所有记录
标签: sql-server records multiple-records