次のスクリプトを実行していますが、連結されたフィールドが間違った値を返しています。
select customer_no, card_no, count(*) as no_trans,
stuff((select ',' + CAST(trans_id as varchar(20))
from transactions a (nolock)
where a.customer_no = b.customer_no and a.card_no = b.card_no
for xml path('')),1,1,'') AS trans_ids
from transactions b (nolock)
where date>= '01 apr 2013'
and date < '30 apr 2013'
and trans_id in (select trans_id
from product_items (nolock)
where product_item in ('298029'))
group by customer_no, card_no
私が期待しているのはノーです。その中にproduct_itemがあり、trans_idのリストを連結フィールドとして返すtrans (count(*))。
例えば。
customer_No card_no no_trans trans_ids
1234 12345 2 1, 2
しかし、私が得ているのは;
customer_No card_no no_trans trans_ids
1234 12345 2 1, 2, 3, 5, 6
誰かが私が間違ったことを教えてもらえますか? 前もって感謝します。
サンプルデータ
取引表
Customer_No Card_No Trans_ID
1234 12345 1
1234 12345 2
商品アイテム表
Trans_ID Product_item
1 298029
2 298029