我有我的表架构和类似这样的数据
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
您可以参考此 question 了解更多详情。我想要的是在这里根据categoryId显示不同的公司信息。例如对于CategoryId 2我们7和8.但我的查询返回4家公司。如果我使用distinct关键字,那么它会给出一个错误,即可以在数据类型Text上进行过滤,因为所需的列之一是text类型。
请帮帮我。我的查询
-- 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,因为它无法比较。
答案 0 :(得分:1)
您可以从主查询中删除distinct,并在针对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