查找为 EC1 区域中的每个帐户创建的第三大报价
Find third largest quote ever created for each of the accounts in the EC1 area
任何人都可以帮助我 SQL 新手并试图找出下面的问题,请参阅 table 结构的图片;
问题 = Select EC1 区域中每个账户有史以来第三大报价的账户名称、联系人姓氏、案例编号、报价编号、报价日期和报价价值
到目前为止我得到了;
Select
a.accountname, cc.lastname, c.casenumber,
q.quotenumber, q.quotedate, q.quotevalue
from
TBL_Quote q
Left join
TBL_case c On q.caseid = c.caseid
Left join
tbl_contact cc On c.contactID = cc. contactID
Left join
tbl_account a On a.accountid = cc.accountid
Where
left(a.postcode, 3) like 'EC1'
第三个:
SELECT TOP 1 value
FROM
(SELECT DISTINCT TOP 3 value
FROM tbl_quote
ORDER BY value DESC) a
ORDER BY value
我似乎无法合并前 3 个,查询是否最好按 overpartition ?
我会建议连接和行限制子句:
select ac.accountName, co.lastName, ca.caseNumber, qu.quoteNumber
from tbl_account ac
inner join tbl_contact co on co.accountId = ac.accountId
inner join tbl_case ca on ca.contactId = co.contactId
inner join tbl_quote qu on qu.caseId = ca.quoteId
where ac.postcode like 'EC1%'
order by len(qu.value) desc
offset 2 rows fetch next 1 row only
任何人都可以帮助我 SQL 新手并试图找出下面的问题,请参阅 table 结构的图片;
问题 = Select EC1 区域中每个账户有史以来第三大报价的账户名称、联系人姓氏、案例编号、报价编号、报价日期和报价价值
到目前为止我得到了;
Select
a.accountname, cc.lastname, c.casenumber,
q.quotenumber, q.quotedate, q.quotevalue
from
TBL_Quote q
Left join
TBL_case c On q.caseid = c.caseid
Left join
tbl_contact cc On c.contactID = cc. contactID
Left join
tbl_account a On a.accountid = cc.accountid
Where
left(a.postcode, 3) like 'EC1'
第三个:
SELECT TOP 1 value
FROM
(SELECT DISTINCT TOP 3 value
FROM tbl_quote
ORDER BY value DESC) a
ORDER BY value
我似乎无法合并前 3 个,查询是否最好按 overpartition ?
我会建议连接和行限制子句:
select ac.accountName, co.lastName, ca.caseNumber, qu.quoteNumber
from tbl_account ac
inner join tbl_contact co on co.accountId = ac.accountId
inner join tbl_case ca on ca.contactId = co.contactId
inner join tbl_quote qu on qu.caseId = ca.quoteId
where ac.postcode like 'EC1%'
order by len(qu.value) desc
offset 2 rows fetch next 1 row only