繁体   English   中英

T-SQL等效于其他表中的MySQL

[英]T-SQL equivalent to MySQL aggragate from other table

我正在努力在SQL Server中做一些在MySQL中超级简单的事情。

我想从一个表中获取一些列(为简单起见,只说一个),然后根据第一个表中的键对另一个表的其他列进行计数,并在我的结果集中包含这两个值。

以下查询在MySQL中有效,但在SQL Server中不适用:

SELECT 
    ph.PONum, 
    COUNT(pd.POLine) AS LineCount
FROM 
    POHeader AS ph
INNER JOIN 
    PODetail AS pd ON ph.POnum = pd.PONum
WHERE 
    ph.PONum = 4444

结果:

在此处输入图片说明

SQL Server(T-SQL)执行此操作的方式是什么?

与MySQL不同,SQL Server不会假定要分组的列。 需要在GROUP BY列表中定义每个未聚合的列。

对于您的查询应为:

SELECT 
    ph.PONum, 
    COUNT(pd.POLine) AS LineCount
FROM 
    [Dbo].POHeader AS ph
INNER JOIN 
    [Dbo].PODetail AS pd ON ph.POnum = pd.PONum
WHERE 
    ph.PONum = 4444
GROUP BY 
    ph.PONum

您也可以使用相关子查询。 例如

SELECT 
    ph.PONum, 
    ( select COUNT(*) from PODetail where PONum = ph.POnum ) LineCount
FROM 
    POHeader ph
WHERE
    ph.PONum = 4444

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM