Une interface utilisateur (avant que le rapport montre) montre un coup d'oeil vers le haut (Combo) qui aTSQL Hack nécessaire pour obtenir un filtre pour les données
- (ID = 0) .Toutes Organisation Unités
- (ID = 4) .HR
- (ID = 5) .DEV
Je dois:
- Pouvoir afficher les données de (4) + (5) si (0) est sélectionné.
- Seulement (4) OU (5) si HR ou DEV est sélectionné.
Recherche code combo (le paramètre sélectionné Flux dans la requête ci-dessous.)
Select 0 AS ID,'All Org' AS Name from DP_ORG_OrganizationUnit
where DP_ORG_OrganizationUnit.Code IN {AccessData}
Union
SELECT
DP_ORG_OrganizationUnit.ID,
DP_ORG_OrganizationUnit.Name
FROM DP_ORG_OrganizationUnit where DP_ORG_OrganizationUnit.Code IN ('HR','DEV')
données Rapport ligne requête
SET CONCAT_NULL_YIELDS_NULL OFF
DECLARE @EmpID as int;
DECLARE @OrganizationUnit as int;
DECLARE @StartDate as datetime;
DECLARE @EndDate as datetime;
SET @EmpID = ?;
SET @StartDate = ?;
SET @EndDate = ?;
SET @OrganizationUnit = ?;
SELECT
Employee.Code,
Employee.Name1+' '+Employee.Name2+' '+Employee.Name3+' '+Employee.Name4+' '+Employee.Name5 AS FullName,
Employee.OrganizationUnit,
ContractType.Name,
EmployeeContract.StartDate,
EmployeeContract.EndDate
FROM Employee INNER JOIN (ContractType INNER JOIN EmployeeContract
ON ContractType.ID = EmployeeContract.ContractType)
ON Employee.ID = EmployeeContract.Employee
WHERE (Employee.ID = @EmpID OR @EmpID=0)
AND
(Employee.OrganizationUnit = @OrganizationUnit OR @OrganizationUnit=0)
AND NOT((EndDate < @StartDate or StartDate > @EndDate));
De toute façon je peux réaliser des regards de celui-ci? 0 = 0 afficherait également toutes les données des autres départements ..
Personne: -o?
en apprendre davantage sur est ISNULL() et COALESCE(), parce que "SET CONCAT_NULL_YIELDS_NULL OFF" va disparaître dans le futur –
lorsque vous mettez un KEY = x OU Key = y dans le WHERE, balayage de la table de surveillance. –