我想创建一个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
a.ID
, a.Title
, a.Description
, (SELECT SUM(b.Sold) FROM TableB b WHERE b.ID = a.ID)
FROM TableA a;