【问题标题】:Add Top 1 and Order By to select statement with multiple joins添加 Top 1 和 Order By 以选择具有多个连接的语句
【发布时间】:2016-03-14 15:20:42
【问题描述】:

我正在 sql server 中编写一个 VIEW 并使用内部连接连接了几个表。

问题。

  1. 当我在内部联接语句中添加“order by nameRela.WNAME_INDIVIDUAL_LAST”时,下一个内部联接以红色突出显示,表示“内部语法不正确”
  2. 当我在 select 语句中添加“top 1”时,它也会以红色显示错误。

使用带有多个内部连接的 select 语句,添加“Top 1”或选择第一条记录并添加顺序的正确语法是什么

谢谢

select  top 500    
    rtrim(pendk_policy) as Id
    ,case (pendk_company) when '17' then 'BNR' when 'WP' then 'PENN' end as Company
    ,case rtrim(pendk_policy) when '' then '--' else rtrim(pendk_policy) end  as PolicyNumber 
    ,'InForce' as [Type]
    , (
        case
            when WPOLC_CONTRACT_CODE = 'A' then 'Active'
            when WPOLC_CONTRACT_CODE = 'T' then 'Terminated'     
            when WPOLC_CONTRACT_CODE = 'P' then 'Pending'  
            when WPOLC_CONTRACT_CODE = 'S' then 'Suspended'  
            when WPOLC_CONTRACT_CODE = 'H' then 'On Hold'
        end
    ) as [Status]
    ,  top 1  rtrim(nameRela.wname_individual_first) + ' '+ rtrim(nameRela.wname_individual_middle) + ' ' + rtrim(nameRela.wname_individual_last) as Customer
from  
    WPOLC_TABL wpolc
    inner join WRELA_TABL wrela on (wrela.WRELA_COMPANY_CODE = wpolc.WPOLC_COMPANY_CODE and wrela.WRELA_POLICY_NUMBER = wpolc.WPOLC_POLICY_NUMBER and wrela.WRELA_RELATE_CODE = 'sa')

    inner join WRELA_TABL custRela on (custRela.WRELA_COMPANY_CODE = wpolc.WPOLC_COMPANY_CODE and custRela.WRELA_POLICY_NUMBER = wpolc.WPOLC_POLICY_NUMBER 
        and custRela.WRELA_RELATE_CODE in ('in', 'ji' , 'je')) order by  custRela.WRELA_RELATE_CODE

    inner join wname_tabl nameRela on (custRela.WRELA_COMPANY_CODE = nameRela.WNAME_COMPANY_CODE and custRela.WRELA_NAME_ID = nameRela.WNAME_NAME_ID )
    order by nameRela.WNAME_INDIVIDUAL_LAST

    inner join PENDKEY_TABL pk on (wrela.WRELA_COMPANY_CODE = pk.PendK_company and wrela.WRELA_POLICY_NUMBER = pk.PENDK_POLICY)

【问题讨论】:

  • 嗯?这些都不是有效的 SQL 语法。你可能想做什么?
  • 请发布一些示例数据和您想要的结果。我们无法真正说出您要使用此查询来完成什么。就目前而言,您不能使用多个TOP X 语句应用于不同的列,并且您不能在JOIN 语句之后使用ORDER BY

标签: sql sql-server


【解决方案1】:

order by 应该在查询中排在最后。基本格式是:

Select 
From
  inner join
where
order by

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 2021-07-18
    • 1970-01-01
    相关资源
    最近更新 更多