首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何捕获前20个单元

如何捕获前20个单元
EN

Stack Overflow用户
提问于 2014-07-17 23:46:57
回答 3查看 82关注 0票数 0

(MS SQL)我正在尝试编写一个查询,该查询将捕获来自新办公室的前20笔贷款。我办公室的贷款号码是9位数(100100001)。前4位是办公室标识符,其余5位是发放的贷款总额。因此,如果贷款文件的贷款号为100800015,这意味着它来自office 1008,并且是该office发起的第15个文件。

目前,我有以下问题:

代码语言:javascript
复制
SELECT    
    l.FundedDate,  
    l.LoanNumber,  
    l.BorrowerLastName,  
    l.LoanType  

FROM  
    Loan.LoanQA AS l  

WHERE  
    l.FundedDate BETWEEN '6/01/2014' AND '6/30/2014'  
    AND l.LoanType = 'FHA'

我如何调整上面的内容,以便能够在特定的时间范围内从任何办公室捕获前20个单元(即,月)?因此,前4个字符将变得非常重要,因为不同的办公室是不同的。

我不想调整WHERE子句中的前4位数字(分支ID)。我只是想输入一个日期范围,如果有新的贷款(最后5位),我希望它捕获前20个单位。

EN

回答 3

Stack Overflow用户

发布于 2014-07-17 23:54:40

查询取决于您使用的数据库引擎,但通常您将使用substring函数来确定贷款办公室,然后包含一个where子句来匹配您正在查找的办公室:

代码语言:javascript
复制
SELECT TOP 20                                            -- only the first 20
       l.FundedDate,
       l.LoanNumber,
       l.BorrowerLastName,
       l.LoanType
 FROM
       Loan.LoanQA AS l

WHERE
       l.FundedDate BETWEEN '6/01/2014' AND '6/30/2014'
   AND l.LoanType = 'FHA'
   AND SUBSTRING(l.LoanNumber, 1, 4) = '1001'               -- only office 1001
ORDER BY l.FundedDate

上面的查询是针对MS SQL Server的。

如果您使用的是不同的数据库引擎,则可能必须使用其他方法来限制行。例如,对于MySQL,您可以使用LIMIT 1, 20

票数 0
EN

Stack Overflow用户

发布于 2014-07-17 23:56:00

因为您没有指定DBMS,所以这是我能提供的最好的帮助。

SQL Server:如果您的数据库管理系统是SQL Server,那么您可以使用TOP这样做

代码语言:javascript
复制
SELECT    TOP 20
          l.FundedDate,  
          l.LoanNumber,  
          l.BorrowerLastName,  
          l.LoanType  

FROM      Loan.LoanQA AS l  

WHERE     l.FundedDate BETWEEN '6/01/2014' AND '6/30/2014'  
AND       l.LoanType = 'FHA'
AND       SUBSTRING(CONVERT(NVARCHAR(10),l.LoanNumber), 1, 4) = '1234'
ORDER BY  l.FundedDate

MySQL:如果您的数据库管理系统是MySQL,那么您可以使用LIMIT这样做

代码语言:javascript
复制
SELECT    l.FundedDate,  
          l.LoanNumber,  
          l.BorrowerLastName,  
          l.LoanType  

FROM      Loan.LoanQA AS l  

WHERE     l.FundedDate BETWEEN '6/01/2014' AND '6/30/2014'  
AND       l.LoanType = 'FHA'
AND       SUBSTRING(Convert(l.LoanNumber, char(10)), 1, 4) = '1234'
ORDER BY  l.FundedDate
LIMIT     20

Oracle

如果您的数据库管理系统是Oracle,则可以通过使用ROWNUM来执行此操作

代码语言:javascript
复制
SELECT    l.FundedDate,  
          l.LoanNumber,  
          l.BorrowerLastName,  
          l.LoanType  

FROM      Loan.LoanQA AS l  

WHERE     l.FundedDate BETWEEN '6/01/2014' AND '6/30/2014'  
AND       l.LoanType = 'FHA'
AND       ROWNUM <= 20

希望这能有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2014-07-18 21:55:18

我能够回答我自己的问题,下面是MS SQL SMS中的查询。我相信外面有人能够相信WHERE子句。

代码语言:javascript
复制
SELECT      
    l.FundedDate,  
    l.LoanNumber,  
    l.BorrowerLastName,  
    l.LoanType

FROM  
    Loan.LoanQA AS l  

WHERE  
    l.FundedDate BETWEEN '1/01/2014' AND '6/30/2014'  
    AND(l.LoanNumber LIKE '%00001'    
    OR l.LoanNumber LIKE '%00002'  
    OR l.LoanNumber LIKE '%00003'  
    OR l.LoanNumber LIKE '%00004'  
    OR l.LoanNumber LIKE '%00005'  
    OR l.LoanNumber LIKE '%00006'  
    OR l.LoanNumber LIKE '%00007'  
    OR l.LoanNumber LIKE '%00008'  
    OR l.LoanNumber LIKE '%00009'  
    OR l.LoanNumber LIKE '%00010'  
    OR l.LoanNumber LIKE '%00011'  
    OR l.LoanNumber LIKE '%00012'  
    OR l.LoanNumber LIKE '%00013'  
    OR l.LoanNumber LIKE '%00014'  
    OR l.LoanNumber LIKE '%00015'  
    OR l.LoanNumber LIKE '%00016'  
    OR l.LoanNumber LIKE '%00017'  
    OR l.LoanNumber LIKE '%00018'  
    OR l.LoanNumber LIKE '%00019'  
    OR l.LoanNumber LIKE '%00020')  

ORDER BY  
    l.BranchID
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24808095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档