-1

我需要帮助来解决这个问题。

希望有人能给我建议。

对于示例,我有如下数据:

                            PROCLIB.MARCH                                1
                          First 10 Rows Only

  Flight     Date  Depart  Orig  Dest     Miles   Boarded  Capacity
  -----------------------------------------------------------------
  114     01MAR94    7:10  LGA   LAX       2475       172       210
  202     01MAR94   10:43  LGA   ORD        740       151       210
  219     01MAR94    9:31  LGA   LON       3442       198       250
  622     01MAR94   12:19  LGA   FRA       3857       207       250
  132     01MAR94   15:35  LGA   YYZ        366       115       178
  271     01MAR94   13:17  LGA   PAR       3635       138       250
  302     01MAR94   20:22  LGA   WAS        229       105       180
  114     02MAR94    7:10  LGA   LAX       2475       119       210
  202     02MAR94   10:43  LGA   ORD        740       120       210
  219     02MAR94    9:31  LGA   LON       3442       147       250

我有条件 ('LAX,ORD'), 'LAX','LON','YYZ',('PAR,LON,FRA'),'FRA' ...AND ELSE

我应该如何处理这些数据以在 SQL 中将报告显示为该条件?

我做的参数是

 Dest like @dest -> (from table condition(('LAX, ORD'), 'LAX','LON',('PAR,LON,FRA'),'FRA',..etc)) +'%' 
 And Date like @date + '%' 
 And Depart like @depart + '%'

如果我选择'LAX'as @dest,那么只会'LAX'显示

如果我选择'LAX,ORD'as ,@dest那么只会显示'LAX''ORD'

我需要帮助,建议和建议。

谢谢

4

1 回答 1

0

如果您的 @dest值是“LAX,ORD”,则可以解决您的解决方案的一个查询是

 select *
 from PROCLIB.MARCH
 where dest in ('LAX','ORD')

要对其进行参数化,您需要将其变为表格。

 Dest
 ====
 LAX
 ORD

并且查询变为

 select *     
 from PROCLIB.MARCH
 where dest in (select Dest from @DestTable)

如果要@dest作为字符串参数传递,则需要以某种方式将其拆分为表。搜索 SQL 拆分函数将提供许多选项。

如果您的查询封装在存储过程中,更好的方法是将值作为表值参数传递。见http://blog.sqlauthority.com/2008/08/31/sql-server-table-valued-parameters-in-sql-server-2008/

于 2013-07-31T08:42:19.857 回答