我有以下有效的查询:
SELECT
STUFF
(
(
SELECT
', ' + RTRIM(LTRIM(ulastname))
FROM
ROOM r LEFT JOIN person p ON p.hmy = r.hmyperson
WHERE 1=1
AND r.hmytenant = t.hmyperson
FOR XML PATH('')
)
, 1
, 2
, ''
)
FROM unit u
LEFT JOIN tenant t ON u.hproperty = t.hproperty
WHERE 1=1
AND t.hmyperson = 71
AND u.hmy = 19
但是,我需要做的是在最里面的 select 语句中使用一个函数来返回正确的值。我编写了如下查询:
SELECT
STUFF
(
(
SELECT
', ' + RTRIM(LTRIM(fullname))
FROM
SMS_All_Occupants(u.hmy, 'Y', t.hmyperson) occ
WHERE 1=1
AND TYPE = 'T'
AND LESSEE = 'Y'
ORDER BY
occ.relation asc
FOR XML PATH('')
)
, 1
, 2
, ''
)
FROM unit u
LEFT JOIN tenant t ON u.hproperty = t.hproperty
WHERE 1=1
AND t.hmyperson = 71
AND u.hmy = 19
此查询总是以“'.' 附近的语法不正确”而失败,这似乎与传递给函数的 u.hmy 和 t.hmyperson 有关。如果我为这些参数中的每一个输入一个实际值,它就可以正常工作。
有人可以告诉我我做错了什么吗?我已经看到使用交叉连接的参考,但我不知道如何进行这项工作。
谢谢!!