sql - Select minimum value from column A where column B is not in an array -
i'm trying select accesses patients d11.xblood
minimum value grouped d11.xpid
- , d11.xcaccess_type
not 288, 289, or 292. (d11.xblood
chronological index of accesses.)
d11.xpid
: patient id (int)d11.xblood
: unique chronological index of patients' accesses (int)d11.xcaccess_type
: unique identifier accesses (int)
i want report 1 row each d11.xpid
d11.xblood
minimum (initial access) respective d11.xpid
. moreover, want exclude row if initial access d11.xpid
has d11.xcaccess_type
value of 288, 289 or 292.
i have tried several variations of in select expert:
{d11.xblood} = minimum({d11.xblood},{d11.xpid}) , not ({d11.xcaccess_type} in [288, 289, 292])
this correctly selects rows initial access eliminates rows current access not in array. want eliminate rows initial access not in array. how can accomplish this?
sample table:
xpid xblood xcaccess_type ---- ------ ------------- 1 98 400 1 49 300 1 152 288 2 33 288 2 155 300 2 70 400 3 40 300 3 45 400
sample desired output:
xpid xblood xcaccess_type ---- ------ ------------- 1 49 300 3 40 300
see xpid = 2
not in output because minimum value of xblood
had xcaccess_type = 288
excluded. see though xpid = 1
has xcaccess_type = 288
, because there lower value of xblood
xpid = 1
xcaccess_type not in (288,289,292)
still included.
if don't want write stored procedure or custom sql handle this, add group. assuming deepest group (the 1 closest details section) sorting based on xpid
, add group inside 1 sorts xcaccess_type
lowest highest.
suppress header , footer new group add clause details section:
({d11.xpid} = previous({d11.xpid}) or ({d11.xcaccess_type} in [288, 289, 292])
this should modify report ever display records lowest access value per person. , if lowest access value 1 of 3 forbidden values, no records show xpid
.
Comments
Post a Comment