I have the following data (I have a lot more rows this is just an example):
VALUE Location FLEET REGION
P Pocatello, ID 104 232
B Pocatello, ID 104 232
B Spokane, WA 107 232
B Spokane, WA 107 232
In either reporting services or MSSQL I need to group by fleet. Afer it is grouped I want it to see what values each group contains.
If the group contains values P and B then its Production If the group contains B only then it is Reporting If the group contains P then its Productivity
What I want from this example is the following rows to be returned in the end.
VALUE LOCATION FLEET REGION
Production Pocatello,ID 104 232
Reporting Spokane, WAS 107 232
Right now the SQL query reports the data at the top of my quesiton. I need to either do the grouping and calculation is MSSQL or SSRS either one will work but how do I go about doing it to get the data listed like I have right above.
Thanks!
You could group on the other columns, and check for the presence if P
or B
in a case
statement:
declare @t table (value char(1), Location varchar(50), fleet int, region int)
insert @t values
('P', 'Pocatello, ID', 104, 232),
('B', 'Pocatello, ID', 104, 232),
('B', 'Spokane, WA', 107, 232),
('B', 'Spokane, WA', 107, 232);
select case
when max(case when value = 'P' then 1 end) = 1
and max(case when value = 'B' then 1 end) = 1 then 'Production'
when max(case when value = 'P' then 1 end) = 1 then 'Productivity'
when max(case when value = 'B' then 1 end) = 1 then 'Reporting'
end
, location
, fleet
, region
from @t
group by
location
, fleet
, region
This prints:
(No column name) location fleet region
Production Pocatello, ID 104 232
Reporting Spokane, WA 107 232