Проблема при выборе отличительного элемента в T-Sql - PullRequest
0 голосов
/ 12 июля 2011

У меня есть схема таблицы и данные примерно такие

CompanyCategoryId   SubCategoryId   CategoryId  CompanyId
      44                   22          1            7
      45                   23          1            7
      46                   24          1            7
      47                   10          2            7
      48                   11          2            8
      49                   12          2            8
      50                   16          2             7

Вы можете отослать этот вопрос для более подробной информации. То, что я хочу, это отобразить отличную информацию о компании на основе этой категории. Например для CategoryId 2 у нас 7 и 8. Но мой запрос возвращает 4 компании. Если я использую отдельное ключевое слово, то выдает ошибку, что возможна фильтрация для типа данных Текст, так как один из обязательных столбцов имеет тип текста.

Пожалуйста, помогите мне. Мой запрос

-- GET ALL COMPANIES REGISTERED IN THIS MONTH
DECLARE @Last30Day as date
SET @Last30Day = GETDATE() - 30
SELECT   DISTINCT   tbl_Company.CompanyName, tbl_Company.Website, tbl_Company.Email, tbl_Company.Profile,
           (ISNULL(tbl_Company.Address,'') + ', '+ISNULL(tbl_Company.City,'')+', '+ISNULL(tbl_Company.State,'')) AS Address, 
           tbl_Company.Phone1, tbl_Company.Mobile1
FROM         tbl_Company INNER JOIN
                      tbl_Company_Category_Map ON tbl_Company.CompanyId = tbl_Company_Category_Map.CompanyId
WHERE     (tbl_Company_Category_Map.CategoryId = 2) AND tbl_Company.RegistrationDate BETWEEN @Last30Day AND GETDATE()

Ошибка: Сообщение 421, уровень 16, состояние 1, строка 5 Тип текстовых данных не может быть выбран как DISTINCT, потому что он не сопоставим.

1 Ответ

1 голос
/ 12 июля 2011

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

select C.CompanyName -- extra fields here
from tbl_Company as C
  inner join (
               select distinct CompanyId
               from tbl_Company_Category_Map
               --where ? = ?
             ) as M
    on C.CompanyId = M.CompanyId  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...