2016-05-19 84 views
0

所以我正在運行一個報告,看看有多少客戶向我們下單。我的大部分數據都是他們的電子郵件,他們購買了多少次,他們的姓名,最後一個訂單日期和最後一個OrderID。SQL獲得多個結果到一個單元格?

我不知道如何得到是從該訂單項目獲得productCode。

這些項目存儲在一個名爲Lines的獨立表中,並通過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中的group \ _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 

,這是ouptput

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

這是一個工作示例有了我的數據,如果你有疑問,問我需要使用的東西。

相關問題