Я пытаюсь заполнить цвета на основе записей таблицы.
Из базы данных SQL Server AdventureWorks2017:
select * from [HumanResources].[Department]
У меня есть два набора данных:
1st : select * from [HumanResources].[Department]
DepartmentID Name GroupName Status
----------------------------------------------------------------------------------------------------------------------------------------
1 Engineering Research and Development Cancelled
2 Tool Design Research and Development Blacklist
3 Sales Sales and Marketing Approved
4 Marketing Sales and Marketing All good
5 Purchasing Inventory Management xxx
6 Research and Development Research and Development yyy
7 Production Manufacturing zzz
8 Production Control Manufacturing xxx
9 Human Resources Executive General and Administration zzz
10 Finance Executive General and Administration aaa
11 Information Services Executive General and Administration xxx
12 Document Control Quality Assurance yyy
13 Quality Assurance Quality Assurance zzz
14 Facilities and Maintenance Executive General and Administration aaa
15 Shipping and Receiving Inventory Management bbb
16 Executive Executive General and Administration aaa
2-й , у меня есть требование получить данные, как показано ниже, и отобразить в отчете SSRS:
Name0 Name1 Name2 Name3 Name4
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Document Control Facilities and Maintenance Information Services Production Control Research and Development
Engineering Finance Marketing Purchasing Sales
Executive Human Resources Production Quality Assurance Shipping and Receiving
NULL NULL NULL NULL Tool Design
Приведенные выше данные я получаю по следующему запросу:
WITH Table1 AS
(
SELECT [Name]
FROM [HumanResources].[Department]
), CTE AS
(
SELECT [Name], COL, ROW_NUMBER() OVER(PARTITION BY Col ORDER BY [Name]) AS Row
FROM ( SELECT [Name],
5 - NTILE(5) OVER(ORDER BY [Name] DESC) AS Col
FROM Table1
) c
)
SELECT [0], [1], [2], [3], [4]
FROM CTE
PIVOT (MAX([Name]) FOR Col IN ([0], [1], [2], [3], [4])) AS Pvt
ORDER BY Row;
Кроме того, в дополнение к вышеуказанному требованию, другое требование заключается в заполнении цветов во 2-м наборе результатов на основе значений "GroupName" и "Status", которые являются значениями "другого набора данных";
которым я пользуюсь:
select * from [HumanResources].[Department]
Я пытаюсь использовать выражения ниже, чтобы заполнить цвета для второго набора данных:
=IIF(LOOKUP((Fields!ID0.Value or Fields!ID1.Value or Fields!ID2.Value or Fields!ID3.Value or Fields!ID4.Value),Fields!Name.Value,Fields!GroupName.Value="Research and Development","DsetAll"),"GREEN","WHITE")
=IIF(LOOKUP((Fields!ID0.Value or Fields!ID1.Value or Fields!ID2.Value or Fields!ID3.Value or Fields!ID4.Value),Fields!Name.Value,Fields!GroupName.Value,"DsetAll")="Research and Development","GREEN","WHITE")
Проблема в том, что ни одно из приведенных выше выражений не работает нормально.
EDIT:
Выражение ниже выглядит хорошо работает:
=IIF(LOOKUP(Fields!ID0.Value ,Fields!Name.Value,Fields!GroupName.Value,"DsetAll")="Research and Development","BLUE","RED")
Похоже, "ИЛИ" внутри "поиска" не работает. Как я могу сделать эту работу? Есть еще способы?
В 2-м наборе результатов , идея сделать:
if groupname "Research and Development" and status is "Cancelled" then "Green"
if groupname "Research and Development" and status is "Blacklist" then "Green"
if groupname "Sales and Marketing" and status is "Approved" then "Green"
if status is "All good" then Gray
if groupname "Manufacturing" then Blue
if groupname "Control Manufacturing" then red
if groupname "Executive General and Administration" then pink
if groupname "Quality Assurance" then Violet
Else its should be white
1-е выражение не показывает заполненный цвет.
Кроме того, значение NULL / Blank не должно иметь цвета.
и второе выражение имеет ошибку:
The Error occurred during local report processing.
The definition of the report '/ColorTest' is invalid.
The BackgroundColor expression for the text box 'ID0' contains an error: [BC30201] Expression expected.
Как мне этого добиться? Или, пожалуйста, дайте мне знать, если есть какие-либо другие способы добиться того же? Спасибо