SQL Server:从表A中选择列并从表B中加入计数

SQL Server:从表A中选择列并从表B中加入计数,sql,sql-server,tsql,Sql,Sql Server,Tsql,我希望创建一个SQL查询,这样我就可以检索一个数据库事务中的所有信息,而不必在我的C代码中加载其中的一部分,然后启动一个子中继器来对其余的部分进行计数 这些是我试图执行此查询的表的行 表A这是产品目录 ID : Product : Description ----------------------------------------------- 1 : Apple : This fruit grows on trees 2 : Cherry : This f

我希望创建一个SQL查询,这样我就可以检索一个数据库事务中的所有信息,而不必在我的C代码中加载其中的一部分,然后启动一个子中继器来对其余的部分进行计数

这些是我试图执行此查询的表的行

表A这是产品目录

ID : Product     : Description
-----------------------------------------------
1  : Apple       : This fruit grows on trees
2  : Cherry      : This fruit grows on a bush
表B这是销售跟踪器

ID : Sold
---------
1  : 15
1  : 10
2  : 13
1  :  8
2  :  5
我希望查询的结果是

ID : Title   : Description                : Sold (Count)
---------------------------------------------------------
1  : Apple   : This fruit grows on trees  : 33
2  : Cheery  : This fruit grows on a bush : 18
到目前为止我得到了什么?我必须承认,我已经尝试了很多方法来实现这一点,这是我目前打开的,但不起作用

SELECT 
    a.ID, a.Title, a.Description, 
    ISNULL(b.Sold, 0) AS SellCount
FROM 
    TableA a
LEFT JOIN
    (SELECT 
         COUNT(b.Sold), b.ID 
     FROM
         TableB b 
     WHERE
         b.ID = a.ID 
     GROUP BY
         b.Sold) AS b ON b.ID = a.ID
对于SQL Server中更高级的查询,我还是比较陌生的,我非常感谢您的帮助和指导。让我知道我是否可以更详细地描述任何事情

您可以使用:

SELECT a.ID, a.Title, a.Description, SUM(ISNULL(b.Sold,0)) as SellCount
FROM TableA a
LEFT JOIN TableB b On b.ID = a.ID 
Group By a.ID, a.Title, a.Description

一种方法是在SELECT子句中使用相关子查询:


你差点就成功了。只需删除select count中的where子句。。。派生表,您为其分配了别名b。真棒,就像那样,我的问题已经解决,我从中学到了一些东西。非常感谢。
SELECT
      a.ID
    , a.Title
    , a.Description
    , (SELECT SUM(b.Sold) FROM TableB b WHERE b.ID = a.ID)
FROM TableA a;