簡體   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