Je prépare un rapport dans SSRS. L'ensemble de données est rempli avec une requête SQL d'un serveur MS SQL. Il interroge plusieurs tables similaires à l'aide de Union All. Le problème est qu'il y a une perte d'informations. Les différentes tables sont destinées à différents sites de travail, mais aucune des colonnes de ces tables n'a le nom du site; la seule façon d'identifier un site est par le nom de la table. Dans les colonnes combinées qui sont le résultat de l'Union Tout, il n'y a aucun moyen de savoir quelles lignes proviennent de quel site.
Existe-t-il un moyen de modifier ma requête pour ajouter une colonne aux résultats, qui aurait le site de travail auquel chaque ligne est associée? Je ne peux pas ajouter cela à la table d'origine, car j'ai des autorisations en lecture seule. J'avais pensé à quelque chose comme ça, mais je ne sais pas quel type d'expression utiliser, ou si cela peut même être fait:
SELECT t1.column, t1.column2
FROM t1
<some expression>
UNION ALL
SELECT t2.column, t2.column2
FROM t2
<some expression>
UNION ALL
...
etc. L'expression "ajouterait" une colonne, qui ajouterait le nom du site associé à chaque partie de la requête. Est-ce que cela ou quoi que ce soit d'autre pourrait fonctionner pour obtenir le nom du site?
Ajoutez-le manuellement lorsque vous générez la requête:
SELECT 'Site1' AS SiteName, t1.column, t1.column2
FROM t1
UNION ALL
SELECT 'Site2' AS SiteName, t2.column, t2.column2
FROM t2
UNION ALL
...
EXEMPLE:
DECLARE @t1 TABLE (column1 int, column2 nvarchar(1))
DECLARE @t2 TABLE (column1 int, column2 nvarchar(1))
INSERT INTO @t1
SELECT 1, 'a'
UNION SELECT 2, 'b'
INSERT INTO @t2
SELECT 3, 'c'
UNION SELECT 4, 'd'
SELECT 'Site1' AS SiteName, t1.column1, t1.column2
FROM @t1 t1
UNION ALL
SELECT 'Site2' AS SiteName, t2.column1, t2.column2
FROM @t2 t2
RÉSULTAT:
SiteName column1 column2
Site1 1 a
Site1 2 b
Site2 3 c
Site2 4 d
pourquoi ne pas ajouter une colonne "source" à chacune des requêtes avec une valeur statique comme
select 'source 1' as Source, column1, column2...
from table1
UNION ALL
select 'source 2' as Source, column1, column2...
from table2