Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 如何根据东/西参数筛选状态列?_Tsql_Reporting Services_Ssrs 2008 - Fatal编程技术网

Tsql 如何根据东/西参数筛选状态列?

Tsql 如何根据东/西参数筛选状态列?,tsql,reporting-services,ssrs-2008,Tsql,Reporting Services,Ssrs 2008,我有一份报告有一个不同州的专栏。我如何从我的参数中过滤那些只有东和西而不是单个状态的状态 我对状态列表的查询是: select distinct state from contract 我对参数的查询是: select distinct case when STATE = 'CA' or STATE = 'WA' or STATE = 'MO' or STATE = 'OR' or STATE = 'NV' or STATE = 'ID' or STATE =

我有一份报告有一个不同州的专栏。我如何从我的参数中过滤那些只有东和西而不是单个状态的状态

我对状态列表的查询是:

select distinct
state
from contract
我对参数的查询是:

select distinct
case when  STATE = 'CA' or STATE = 'WA' or STATE = 'MO'
        or STATE = 'OR' or STATE = 'NV' or STATE = 'ID'
        or STATE = 'MT' or STATE = 'WY' or STATE = 'UT'
        or STATE = 'AZ' or STATE = 'CO' or STATE = 'NM'
        or STATE = 'ND' or STATE = 'SD' or STATE = 'NE'
        or STATE = 'KS' or STATE = 'OK' or STATE = 'TX'
        or STATE = 'LA' or STATE = 'AR' or STATE = 'IA'
        or STATE = 'MN' or STATE = 'HI' or STATE = 'AK' then 'West'

    when   STATE = 'MI' or STATE = 'OH' or STATE = 'PA'
        or STATE = 'NJ' or STATE = 'WI' or STATE = 'IL'
        or STATE = 'IN' or STATE = 'KY' or STATE = 'TN'
        or STATE = 'MS' or STATE = 'AL' or STATE = 'GA' 
        or STATE = 'FL' or STATE = 'SC' or STATE = 'NC'
        or STATE = 'VA' or STATE = 'WV' or STATE = 'MD'
        or STATE = 'DE' or STATE = 'CT' or STATE = 'RI' 
        or STATE = 'NY' or STATE = 'MA' or STATE = 'VT'
        or STATE = 'NH' or STATE = 'ME'  then 'East'
    else null end as 'Territory Selection'
from contracts
我的参数将显示为[全部][西部][东部]。我想如果我在[Territory Selection]中将我的过滤器设置为[State],它会将这些州过滤为属于东方或西方的州,但它没有按预期工作。任何提示都将不胜感激

  • 使用复选框“允许null”设置名为“EastWest”的参数。设置一个简单查询,以获取“查询中的可用值”的数据,如:

    Select 'West' as Territory
    union
    Select 'East'
    
  • 像上面那样创建另一个数据集,但将其放在CTE中并引用第一个参数,如下所示:

    With a as 
    (
    Select 
        State
    , case when  STATE in ('CA','WA', 'MO', 'OR' ,'NV' ,'ID','MT' ,'WY' ,'UT','AZ' ,'CO' ,'NM','ND' ,'SD' ,'NE'
            ,'KS' ,'OK' ,'TX','LA' ,'AR' ,'IA','MN' ,'HI' ,'AK') then 'West'
        when  State in ('MI' ,'OH' ,'PA','NJ' ,'WI' ,'IL','IN' ,'KY' ,'TN','MS' ,'AL' ,'GA','FL' ,'SC' ,'NC'
            ,'VA' ,'WV' ,'MD','DE' ,'CT' ,'RI','NY' ,'MA' ,'VT','NH' ,'ME')  then 'East'
        end as 'Territory Selection'
    from (State Listing)
    )
    Select State
    from a
    where [Territory Selection] = isnull(@EastWest,[Territory Selection])
    
  • 请仔细注意谓词,因为它的基本状态是:“当变量为null时,通过将列与自身关联来选择所有内容”

  • 创建另一个“隐藏”变量,称之为“状态”,并将其绑定到您创建的上述数据集。你基本上是从一些小的变量中获取一个变量,然后从一些实际的数据中获取所需的数据,这些数据在之前的列中不存在,或者。。。。您需要一个独特的标签,而不是为状态的每个实例列出一些内容

  • 您现在可能有一个常规数据集,如

    Select (thing)
    from (real table)
    where states in (@states)