在不久之前从这里得到了人们的大力帮助,我有了这个工作的SQL,它从表的全名中接收名字和姓氏。
if ($tax_rate == "10") {
$tax_total = $total * $tax_rate;
}
if ( $tax_rate == "4" ){
$tax_total = $total * $tax_rate;
}
## -- fai check e calcoli -- ##
$new_total = $total + $tax_total
现在,我正在尝试将此SQL合并到与另一个表的联接中。
select concat(vl.lastname, vf.firstname)
from UserName as t cross apply
(values (left(t.name, charindex(', ', t.name)), stuff(t.name, 1,
charindex(', ', t.name) + 1, ''))) vl(lastname, rest)
cross apply
(values (left(vl.rest, charindex(' ', vl.rest + ' ')))) vf(firstname)
但是我遇到一个错误,说'='附近的语法不正确。我该如何解决?
答案 0 :(得分:1)
您需要正确的别名:
. . . (vl.lastname + ',' + vf.firstName)
这些列不在NewRecruit
中。
答案 1 :(得分:0)
第四行有两个相等的符号。
on (a.LName + ',' + a.FName) = t.name =
您需要删除t.name =
子查询必须返回单个行字符串。
select t.name, a.LName, a.FName, a.MI
from NewRecruit a
left join UserName t
on (a.LName + ',' + a.FName) = (
select (vl.lastname + vf.firstname)
from UserName as t cross apply
(values (left(t.name, charindex(', ', t.name)), stuff(t.name, 1,
charindex(', ', t.name) + 1, ''))) vl(lastname, rest) cross apply
(values (left(vl.rest, charindex(' ', vl.rest + ' ')))) vf(firstname)
)
您还将在这里找不到匹配项,因为联接(a.LName + ',' + a.FName)
中的第一个元素是连接列并添加逗号,而不是空格。