2016-05-19 7 views
0

私は1人の顧客が何度注文したのかを知るためにレポートを作成しています。私は彼らの電子メールのほとんどのデータ、彼らが何回購入したか、彼らの名前、最後の注文日と最後のOrderIDを持っています。SQLは1つのセルに複数の結果を取得しますか?

私が得る方法を理解できないのは、その注文から商品コードを取得することです。

項目は、ラインと呼ばれる別個のテーブルに格納され、OrderIDによってメインオーダーにリンクされます。

ProductCodesをその行からカンマ区切りの値として入力するように、注文ごとにマルチプルラインがあるとしたら、方法はありますか?そのような

何かこのクエリは、より良い、それを説明します

BuyerEmail | HowMany | Name | ProductCodes 
-------------------------------------------- 
[email protected] | 12  | Bud | 1231, 123, 

...:

SELECT TOP 1000 
o.BuyerEMail 
,COUNT(*) HowMany 
,o.Name 
,o2.OrderID 
FROM Orders o 
JOIN 
(
SELECT 
BuyerEmail 
,MAX(OrderDate) Latest 
FROM Orders 
GROUP BY BuyerEmail 
) l 
ON o.BuyerEmail = l.BuyerEmail 

JOIN Orders o2 
ON l.BuyerEmail = o2.BuyerEmail 
AND l.OrderDate = o2.OrderDate 

WHERE Pay != 'PayPal' 

GROUP BY 
o.BuyerEmail 
,o.Name 
,l.Latest 
ORDER BY 
COUNT(*) DESC 

は、それが細胞を連結することは可能ですか? ここから始めたいところは分かりません。

ことが可能であるあなたにもちろん

+0

'FOR XML PATH'を見てください – adrianm

+0

[SQL Serverでグループ化した\ _concat MySQL関数?](http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in)の可能な複製-sql-server) –

+0

[GROUP BYを使用してSQL Serverの文字列を連結する方法]の複製がありますか?(http://stackoverflow.com/questions/273238/how-to-use-group-by-to-concatenate- strings-in-sql-server) – Morpheus

答えて

1

ありがとう、あなたはこのような何か実行する必要があります。

select NId_Lista_Surtido, 
    stuff((select cast(',' as varchar(max))+ cast(nid_detalle_surtido as varchar(max)) <<<--- this is the value being appended 
    from CES_DLista_Surtido dsurtido <-- this is the detail table 
    where dsurtido.nid_lista_surtido=tsurtido.nid_lista_surtido <-- this is the condition 
    for xml path('')),1,1,'') as prueba <-- this is how the col name. 
    from CES_TLista_Surtido tsurtido <-- this is the main table 

をし、これが、これは実施例である

NId_Lista_Surtido prueba 1 95854,95855,95856,95857,95858,95859,95860,95861,95862,95863,95864,95865,95866,95867,95868,95869,95870,95871,95872,95873,95874,95875,95876

ouptputです私のデータでは、あなたが疑問を持っていれば、あなたが使う必要のある機能が私に求められます。

関連する問題