2016-10-01 32 views
0

我在尝试开发一个查询,列出供应商的VendorID大于VendorID为34,35和83的公司的最大付款。使用子查询。显示VendorID和付款。 以下是我的工作。这只返回VendorID 34的结果。是否可以列出大于具有多个vendorID(34,35和83)的公司中最大的付款?SQL:返回大于最大支付公司的付款的查询

SELECT VendorID, PaymentTotal 
FROM Invoices 
WHERE PaymentTotal > ALL 

    (SELECT PaymentTotal 
    FROM Invoices 
    WHERE VendorID = 34) 
+1

样本数据和预期结果将会有所帮助。也许把你的子查询改为'从vendorid在(34,35,83)'... – sgeddes

+0

我将尝试的发票中选择max(paymenttotal)。非常感谢。 –

回答

0

我知道,这是一个很古老的问题,但只是为了填补一些漏洞:

鉴于你的桌子上有一些这样的SQL创建:

create table if not exists Invoices (
    VendorID integer, PaymentTotal float 
); 

,并有可能是里面的一些数据是这样的:

insert into Invoices values(1, 3500.5); 
insert into Invoices values(2, 9500.5); 
insert into Invoices values(34, 500.5); 
insert into Invoices values(35, 700.5); 
insert into Invoices values(83, 4000.5); 

然后VendorIds会很容易地从数据库中拉出来li关键字:

SELECT VendorID 
FROM Invoices 
WHERE PaymentTotal > 
    (SELECT max(PaymentTotal) 
    FROM Invoices 
    WHERE VendorID in (34, 35, 83)); 

刚刚经过一些最近的PostgreSQL测试。