使用join计算C#中的列

时间:2017-03-18 18:24:17

标签: c# sql-server

我想计算我的ReviewDetails.Review列,但是我收到了错误:

  

Column' AdvertiserMaster.AdvertiserID'在选择列表中无效   因为它不包含在聚合函数或   GROUP BY子句。

这是我的查询

SELECT DISTINCT 
AdvertiserMaster.AdvertiserID, AdvertiserMaster.BusinessName , ISNULL(AdvertiserMaster.AverageRating, 0) AS AverageRating, AdvertiserMaster.ImageURL1, AdvertiserMaster.Address1, 
AdvertiserMaster.CategoryID, AdvertiserMaster.Email, AdvertiserMaster.CountryID, AdvertiserMaster.StateID, AdvertiserMaster.CityID, AdvertiserMaster.PinCode, AdvertiserMaster.Mobile, 
CategoryMaster.CategoryName, CountryMaster.CountryName, StateMaster.StateName, CityMaster.CityName,Count(ReviewDetails.Review) AS ReviewCount
FROM AdvertiserMaster INNER JOIN
BusinessCategoryDetails ON AdvertiserMaster.AdvertiserID = BusinessCategoryDetails.AdvertiserID INNER JOIN
ReviewDetails ON AdvertiserMaster.AdvertiserID = ReviewDetails.AdvertiserID LEFT OUTER JOIN
CategoryMaster ON AdvertiserMaster.CategoryID = CategoryMaster.CategoryID LEFT OUTER JOIN
CountryMaster ON AdvertiserMaster.CountryID = CountryMaster.CountryID LEFT OUTER JOIN
CityMaster ON AdvertiserMaster.CityID = CityMaster.CityID LEFT OUTER JOIN
StateMaster ON AdvertiserMaster.StateID = StateMaster.StateID LEFT OUTER JOIN
SubCategoryMaster ON BusinessCategoryDetails.SubCategoryID = SubCategoryMaster.SubCategoryID
WHERE (AdvertiserMaster.CategoryID = 8) AND (AdvertiserMaster.CityID = 16619) AND (AdvertiserMaster.IsActive = 1)

因为我试图通过编写Count(ReviewDetails.Review)

来计算

但这没用。

这是我的表格:ClassifiedBD Images

1 个答案:

答案 0 :(得分:0)

如果你想计算某些东西(或者使用像sum这样的其他聚合函数),你需要用group by子句定义你的计数级别,例如:

SELECT
  AdvertiserMaster.AdvertiserID,
  AdvertiserMaster.BusinessName,
  ISNULL(AdvertiserMaster.AverageRating, 0) AS AverageRating,
  AdvertiserMaster.ImageURL1,
  AdvertiserMaster.Address1,
  AdvertiserMaster.CategoryID,
  AdvertiserMaster.Email,
  AdvertiserMaster.CountryID,
  AdvertiserMaster.StateID,
  AdvertiserMaster.CityID,
  AdvertiserMaster.PinCode,
  AdvertiserMaster.Mobile,
  CategoryMaster.CategoryName,
  CountryMaster.CountryName,
  StateMaster.StateName,
  CityMaster.CityName,
  COUNT(ReviewDetails.Review) AS ReviewCount
FROM AdvertiserMaster
INNER JOIN BusinessCategoryDetails
  ON AdvertiserMaster.AdvertiserID = BusinessCategoryDetails.AdvertiserID
INNER JOIN ReviewDetails
  ON AdvertiserMaster.AdvertiserID = ReviewDetails.AdvertiserID
LEFT OUTER JOIN CategoryMaster
  ON AdvertiserMaster.CategoryID = CategoryMaster.CategoryID
LEFT OUTER JOIN CountryMaster
  ON AdvertiserMaster.CountryID = CountryMaster.CountryID
LEFT OUTER JOIN CityMaster
  ON AdvertiserMaster.CityID = CityMaster.CityID
LEFT OUTER JOIN StateMaster
  ON AdvertiserMaster.StateID = StateMaster.StateID
LEFT OUTER JOIN SubCategoryMaster
  ON BusinessCategoryDetails.SubCategoryID = SubCategoryMaster.SubCategoryID
WHERE (AdvertiserMaster.CategoryID = 8)
AND (AdvertiserMaster.CityID = 16619)
AND (AdvertiserMaster.IsActive = 1)
GROUP BY AdvertiserMaster.AdvertiserID,
         AdvertiserMaster.BusinessName,
         ISNULL(AdvertiserMaster.AverageRating, 0),
         AdvertiserMaster.ImageURL1,
         AdvertiserMaster.Address1,
         AdvertiserMaster.CategoryID,
         AdvertiserMaster.Email,
         AdvertiserMaster.CountryID,
         AdvertiserMaster.StateID,
         AdvertiserMaster.CityID,
         AdvertiserMaster.PinCode,
         AdvertiserMaster.Mobile,
         CategoryMaster.CategoryName,
         CountryMaster.CountryName,
         StateMaster.StateName,
         CityMaster.CityName

当你有分组时,你不需要明白。

您也可能希望开始使用表的别名并正确格式化/缩进SQL