首页 > 解决方案 > 多个条件的 SQL 查询语句

问题描述

我需要Dest_Cities在以下语句中添加更多内容,但我不断收到语法错误。

我精通 VBA,但对 SQL 有点陌生。

#(lf)--  a.carrier#(lf)from trident.dbo.vwZCONTK **a#(lf)where a.Dest_City = 'E27'**#(lf)and a.carrier <> 'Y4' #(lf))"]),

标签: sql

解决方案


我认为这代表了您的 VB 格式帖子中的正确 SQL(没关系,您将学习发布以提高可读性)。

如果您在查询中特别有所有那些“#(lf)”换行表示,那可能会窒息它......否则它可能是 <> (不等于)。

此外,作为查询和构建结果列名时的旁注,在列名中嵌入空格通常更像是 PITA。保持它们 CamelCaseFormatted。它们仍然是可读的,但只有一个列名,并且在其余代码中不需要[方括号]。你总是可以让你的输出格式化带有适当空格的标题。

因此,从 [Actual Delivery] 的示例输出列中,更改为 ActualDelivery,对于 DateEmpty、TakenOutDate、DischargePortName 等类似。

现在,没有#(lf) 引用的查询的可读性更具可读性。

select distinct
        a.xblnr as Container,
        a.MBL_ASN as MBN,
        format(a.actual_del_date, 'd','en-us') as [Actual Delivery],
        format(a.Date_Empty, 'd','en-us') as [Date Empty],
        format(a.takenout_date, 'd','en-us') as [Taken Out Date],
        a.port_dischg as [Discharge Port Name],
        a.Dest_city as [Destination City Code],
        a.Truck_com as [Trucking Company],
        case when a.Carrier = 'Z2' then 'APL'
            when a.Carrier = 'HS' then 'Hamburg-Sud'
            when a.Carrier = 'Z6' then 'Hapag'
            when a.Carrier = 'Z8' then 'Maersk'
            when a.Carrier = 'MS' then 'MSC'
            when a.Carrier = 'OO' then 'OOCL'
            when a.Carrier = 'ZM' then 'ZIM'
            when a.Carrier = 'ON' then 'ONE'
            when a.Carrier = 'Z4' then 'Evergreen'
            when a.carrier = 'Y4' then 'AIR'
            else 'Unknown' end as [Carrier Name]
    from 
        trident.dbo.vwZCONTK a
    where 
            a.Dest_City = 'E27'
        and NOT a.carrier = 'Y4'

至于你的#"Filtered Rows" 和#"Changed Type",你似乎从 VB 端的结果集进一步剥离(但我不是 VB 人)。让您的查询工作和结果“源”记录集,然后工作您的表过滤行。


推荐阅读