簡體   English   中英

SQL Server:查詢聯接多個表和分組依據

[英]SQL Server : query join with multiple tables and Group By

我想加入以下三個SQL Server表,如圖所示。 我知道他們必須JOIN ,但我認為正是GROUP BY令我失望。 我認為這需要在SELECT內進行SELECT

select ActJobs.ID as JobID, ActJobs.JobName, ActJobs.CustomerID
From Job.ActiveJobsTbl as ActJobs

select Cus.ID as CustomerID, concat(Cus.LastName, ', ', Cus.FirstName) as Customer
From Customer.CustomerTbl as Cus

Select Est.ID_Job as JobID, Sum(Est.ItemAmount + Est.SalesTax) As Price
From Job.EstimateTbl as Est 
Group By Est.ID_Job

在此處輸入圖片說明

在此處輸入圖片說明

您可以簡單地JOIN前兩個表,然后將聚合查詢轉換為可以JOIN的子查詢:

SELECT 
    ActJobs.ID as JobID, 
    ActJobs.JobName, 
    ActJobs.CustomerID,
    CONCAT(Cus.LastName, ', ', Cus.FirstName) as Customer,
    Est.Price
FROM 
    Job.ActiveJobsTbl AS ActJobs
    INNER JOIN Customer.CustomerTbl AS Cus ON Cus.ID = ActJobs.CustomerID
    INNER JOIN (
        SELECT ID_Job, SUM(ItemAmount + SalesTax) As Price 
        FROM Job.EstimateTbl
        GROUP BY ID_Job
    ) AS Est ON Est.ID_Job = ActJobs.ID

使用標量子查詢並加入

select ActJobs.ID as JobID, ActJobs.JobName, ActJobs.CustomerID,
concat(Cus.LastName,', ',Cus.FirstName) as Customer,(select Sum(Est.ItemAmount + Est.SalesTax) from Job.EstimateTbl as Est where Est.ID_Job=ActJobs.ID) as price
From Job.ActiveJobsTbl as ActJobs
inner join Customer.CustomerTbl as Cus on Cus.ID as CustomerID=ActJobs.CustomerID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM