Избегайте повторяющихся значений в SQL-запросе с разделителями-запятыми - PullRequest
1 голос
/ 19 марта 2019

привет У меня есть запрос с разделителями-запятыми:

select [Product_Name] 
,(select  h2.Location_name + ', '  from (select distinct * from [dbo].[Product_list]) h2 where h1.Product_Name = h2.Product_Name 
    order by h2.Product_Name for xml path  ('')) as Location_name  
,(select   h2.[Store name] + ', ' from [dbo].[Product_list] h2 where h1.Product_Name = h2.Product_Name 
    order by h2.Product_Name for xml path  ('')) as store_name, sum(Quantity) as Total_Quantity from [dbo].[Product_list] h1 
group by [Product_Name]

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

1 Ответ

0 голосов
/ 20 марта 2019

Ну, если вы не ВЫБЕРИТЕ DISTINCT * FROM dbo.Product_list и вместо этого SELECT DISTINCT location_name FROM dbo.Product_list, который в любом случае является единственным нужным столбцом, он вернет только различные значения.

T-SQL поддерживает использование звездочки или символа «звездочка» (*) для заменить явный список столбцов. Это восстановит все столбцы из исходной таблицы. В то время как звездочка подходит для быстрого тестируйте, избегайте использования его в производственной работе, так как изменения внесены в таблицу вызовет запрос на получение всех текущих столбцов в таблице текущий определенный порядок. Это может привести к ошибкам или другим сбоям в отчеты или приложения, ожидающие известное количество возвращаемых столбцов в определенном порядке. Кроме того, возврат ненужных данных может замедлить ваши запросы и вызвать проблемы с производительностью, если источник Таблица содержит большое количество строк. Используя явный столбец список в вашем предложении SELECT, вы всегда достигнете желаемого Результаты, при условии, столбцы существуют в таблице. Если столбец упал, вы получите ошибку, которая поможет определить проблему и исправьте ваш запрос.

Использование SELECT DISTINCT отфильтровывает дубликаты в наборе результатов. SELECT DISTINCT указывает, что набор результатов должен содержать только уникальные строк. Тем не менее, важно понимать, что опция DISTINCT работает только с набором столбцов, возвращаемых предложением SELECT. Это не учитывает любые другие уникальные столбцы в источнике Таблица. DISTINCT также работает со всеми столбцами в списке SELECT, не только первый.

Из запроса руководства по MCT для Microsoft SQL Server 2012.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...