2016-05-19 5 views
0

Итак, я запускаю отчет, чтобы узнать, сколько раз 1 клиент разместил заказ у нас. У меня есть большинство моих данных, их электронная почта, сколько раз они купили, их имя, дату последнего заказа и последний идентификатор заказа.SQL получить несколько результатов в одну ячейку?

То, что я не могу понять, как получить, - это получить товарный код из элементов этого заказа.

Элементы хранятся в отдельной таблице под названием 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

Возможный дубликат [Имитация группы \ _concat MySQL-функция в SQL Server?] (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

это рабочий пример с моими данными, материал - это функция, которую вам нужно использовать, если у вас есть сомнения, спросите меня.

Смежные вопросы