[英]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.