Hsiao,
1 is a constant integer value.
Let's look at some data. Say you have three rows, such as
City State Zip
-------- ----- ------
Topeka KA 12345
Omaha NE 23456
Detroit MI 34567
And say we define a prompt called ?GetKey? as a string, with a prompt message of:
"Filter by (C)ity, (S)tate or (Z)ip?"
Expecting the user to type in either "C","S", or "Z". A second string prompt just gets the filter value the user types in, let's say "Topeka" for know.
The filter could dynamically change the column to filter on in two different ways. It could be based on a calculated column which becomes equal to different database columns based on the first prompt, such as GrpKey1 defined as:
If Upper(?GetKey?) = "C"

then (City) else if (Upper(?GetKey?) = "S"

then (State) else (Zip) ...
The report filter would then look like:
1 = If (GrpKey1 = ?GetKey?) then (1) else (0) ...
Let's say the user types in a "C" at the ?GetKey? prompt and "Topeka" in the second string prompt. The GrpKey1 would evaluate to City and the first row would return a 1 value (as in 1 = if (City = 'Topeka"

then (1)), thus passing the filter (i.e. 1 = 1 or True). The other rows would return a zero, and would not pass the filter (i.e. 1 = 0 or false).
You can do this without creating the calculated column, and in some circumstances you can get better performance, as the whole filter can more easily be passed to the database. This illustration, though, can also be used to create a dynamic grouping column, through the same GrpKey1 calculation.
I hope this helps illustrate how to use conditional filters.
Regards,
Dave Griffin
The Decision Support Group
Reporting Consulting with Cognos BI Tools
"Magic with Data"