2013-04-22 59 views
0

我怎么能算每个贷款的贷款评论(评论是对所谓的“LendingComments”与所谓的“LendingId”的引用列中的另一台计数与加盟

SELECT LendingStatus.Status, Products.Productname, Products.Serial_number, Deposits.Amount, Lendings.DeliveryDate, Lendings.Id AS LendingId, Products.Id AS ProductId FROM Lendings 
LEFT JOIN Products ON Lendings.ProductId = Products.Id 
LEFT JOIN LendingStatus ON Lendings.StatusId = LendingStatus.Id 
LEFT JOIN Deposits ON Lendings.DepositId = Deposits.Id 
WHERE PersonId = 561 ORDER BY DeliveryDate DESC 

回答

1

莫比这样的(如果我没有理解这个问题不够好)

SELECT 
LendingStatus.Status, Products.Productname, Products.Serial_number,Deposits.Amount, Lendings.DeliveryDate, Lendings.Id AS LendingId, Products.Id AS ProductId, LendingComments.NumLendingComments 
FROM Lendings 
LEFT JOIN Products ON Lendings.ProductId = Products.Id 
LEFT JOIN LendingStatus ON Lendings.StatusId = LendingStatus.Id 
LEFT JOIN Deposits ON Lendings.DepositId = Deposits.Id 
OUTER APPLY 
(
SELECT 
    COUNT(*) AS NumLendingComments 
    FROM 
     LendingComments PL 
    WHERE 
     PL.LendingID = Lendings.LendingID 
) AS LendingComments WHERE Personid = 561 ORDER BY DeliveryDate desc 
+0

工作得很好:)谢谢。 – 2013-04-22 11:12:42

+0

没问题,很高兴我可以帮忙!使用“竖起大拇指”时,如果你可以:) – 2013-04-22 11:43:12

0

或许这可以帮助?

SELECT CommentCount = Sum(lc.comments) 
         OVER ( 
         partition BY lc.id), 
     lendingstatus.status, 
     products.productname, 
     products.serial_number, 
     deposits.amount, 
     lendings.deliverydate, 
     lendings.id AS LendingId, 
     products.id AS ProductId 
FROM lendings 
     LEFT JOIN products 
       ON lendings.productid = products.id 
     LEFT JOIN lendingstatus 
       ON lendings.statusid = lendingstatus.id 
     LEFT JOIN deposits 
       ON lendings.depositid = deposits.id 
     LEFT JOIN LendingComments lc 
       ON lc.LendingId = lendings.Lendings.Id 
WHERE personid = 561 
ORDER BY deliverydate DESC 

但是,你没有表现出PersonLendings表,有你

+0

对不起了“PersonLendings”被称为LendingComments – 2013-04-22 11:03:29

0

尝试这一个 -

SELECT ls.status 
    , p.Productname 
    , p.Serial_number 
    , d.AMOUNT 
    , l.DeliveryDate 
    , l.Id AS LendingId 
    , p.Id AS ProductId 
    , pl.cnt 
FROM dbo.Lendings l 
LEFT JOIN (
    SELECT pl.LendingId, cnt = COUNT(pl.LendingComments) 
    FROM dbo.PersonLendings pl 
    GROUP BY pl.LendingId 
) pl ON pl.LendingId = l.LendingId 
LEFT JOIN dbo.Products p ON l.ProductId = p.Id 
LEFT JOIN dbo.LendingStatus ls ON l.StatusId = ls.Id 
LEFT JOIN dbo.Deposits d ON l.DepositId = d.Id 
WHERE PersonID = 561 
ORDER BY l.DeliveryDate DESC