機能する次のクエリがあります。
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 に関係しているようです。これらの各パラメーターに実際の値を入力すると、正常に機能します。
誰かが私が間違っていることを教えてもらえますか? クロス結合の使用についての言及を見たことがありますが、その方法がわかりません。
ありがとう!!