2017-09-29 5 views
0

J'ai la table a avec un groupe de 0 éparpillés sur de nombreuses colonnes qui sont des dates nommées dynamiquement (par exemple, 2017_09_28). Je veux cacher les lignes où la somme de toutes ces colonnes dynamiquement nommées filets à 0.Comment créer des noms de champs dynamiques SUM à partir de la table temporaire

Supposons que je dois créer une instruction select ...

SELECT * FROM (
Select *, (dynamic column 1 + dynamic column 2 + dynamic column 3) sum 
FROM temp table) sbqy WHERE sum != 0 

Je ne sais pas comment saisir tous les noms de colonnes dynamiques! S'il existe une solution alternative, toutes les oreilles, mais ne peuvent pas épeler chaque colonne dynamique, trop et changeront d'une semaine à l'autre.

+0

Pourriez-vous donner votre structure de la table et certains sampledata s'il vous plaît? – Tyron78

Répondre

1

Vous pouvez utiliser SQL dynamique pour créer une chaîne, puis l'exécuter avec sp_executesql

declare @cmd varchar(4000) = '' 

set @cmd = 'select * from temptable where ' + case when someLogicHere then 'dynamicColomn1' end + case when someLogicHere then '+ dynamicColomn2' end 
+ case when someLogicHere then 'dynamicColomn3' end + ' !=0' 

--print(@cmd) 
exec sp_executesql @cmd 
+0

merci. avait peur de ça. – Nicho247