0
私は、以下のコードに従って顧客の詳細のレポートを作成する必要があります。私の追加の要件は、私の電子メールIDに1つ以上の値が含まれている場合、新しいレコードを持つことによってレポートを作成することです。それは私の電子メールIDは、私は別の行に分割したい複数の値を持つている 交差適用を使用すると副問合せが1行以上返されました
select distinct c.PKEY [Customer Code],
c.NAME [Customer Name],
mi.MODEL [Machine #],
(select Split.a.value('.','varchar(100)') email
from
(select
cast('<x>' + replace(m.CONTACT_EMAIL,';','</x><x>')+'</x>' as XML) as x
from tblMachineContact m
where mi.PKEY=m.MAC_PKEY and m.CONTACT_CATEGORY_PKEY in ('PC'))t
cross apply x.nodes ('/x') as Split(a)) [Customer Email]
from tblMachine mi
inner join tblCustomers on m.CUST_PKEY=c.PKEY
where mi.STATUS='A'
ので、
C000279 Cust1 [email protected]
C000279 Cust1 [email protected]
私のコードは次のようである、このようにする必要があります。しかし、私のサブクエリはこれにより1行以上を返し、エラーを引き起こしています。これを達成するための解決策はありますか?
@Gordon、 もう1つ条件を使用しています。しかし、カテゴリ= PCの外部からのこの電子メールIDは、すべてのカテゴリに適用されています。私はそれをPCカテゴリーの私の記録に適用したいだけです。どうすれば達成できますか?以下は
私は、コードのすべてのニュアンスに従っていませんが、あなたの代わりに相関サブクエリのouter apply
を使用している場合、これは動作するはずです、
select distinct c.PKEY [Customer Code],
c.NAME [Customer Name],
mi.MODEL [Machine #],
(select Split.a.value('.','varchar(100)') email
from
(select
cast('<x>' + replace(m.CONTACT_EMAIL,';','</x><x>')+'</x>' as XML) as x
from tblMachineContact m
where mi.PKEY=m.MAC_PKEY and m.CONTACT_CATEGORY_PKEY in ('PC'))t
cross apply x.nodes ('/x') as Split(a)) [Customer Email]
from tblMachine mi
inner join tblCustomers on m.CUST_PKEY=c.PKEY
where mi.STATUS='A' and m.CONTACT_CATEGORY_PKEY in ('PC','TC','ER')
こんにちは、それはうまく動作します、ありがとうございます。しかし、もう一つ質問があります。質問欄を参照して助言してください。 – LT268