Привет, поэтому у меня есть вопрос о конкатенации столбца. У меня две таблицы.Конкатенация столбца в том же столбце в SQL Server
Table 1: Sales Order-> OrderID, ProductsOnHold (Should list product(s) on hold)
Table 2: Products-> ProductID, OnHold (boolean)
- заказ клиента может иметь много продуктов.
- Продукт может иметь трюм, который заставит заказ клиента быть приостановленным, если этот заказ имеет этот продукт.
Таким образом, заказ на продажу может быть приостановлен, если у вас есть 1 или несколько продуктов на удержании.
Я смог получить один продукт для отображения, если заказ находится на удержании, , но что, если у него больше товаров в режиме ожидания - , как я могу их отобразить? Это для просмотра, которое я создаю.
Это то, что я сделал до сих пор:
(SELECT ProductName
FROM Products with (NOLOCK)
WHERE (OnHold = 1) AND (EXISTS
(SELECT CASE
WHEN (COUNT(DISTINCT Product)> 1) THEN (Product + ', ' + Product)
ELSE Product END AS ProductName
FROM SalesOrder WITH (NOLOCK)
GROUP BY OrderID))) AS ProductsOnHold
Желаемая Выход:
OrderID | ProductsOnHold
----------------------------------
1 | P1, P2, P7
2 |
3 | P1
4 | P1, P7, P8, P9, P15, P77
Все, что мне не хватает в моем SQL запросе?
В принципе, вы хотите получить эквивалент функции MySQL, называемой GROUP_CONCAT. Есть много вопросов об этом: [Имитация функции group_concat MySQL в Microsoft SQL Server 2005?] (Http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-microsoft-sql- сервер-2005). –
У вас есть веская причина использовать 'nolock'? –