Je suis à la recherche d'une solution plus élégante (peut-être plus rapide) à ma situation difficile.TSQL sélectionnez à partir d'une autre table dans l'où
J'ai la requête suivante pour produire un rapport sur une table de trafic d'appel:
SELECT 'Tariff1' as [Tariff], Count([Number]) as [Number of calls] ,sum(convert(bigint,[Seconds]))/60 as [Minutes], sum([CustomerCost]) as [Customer Cost], sum([WholesaleCost]) as [WholesaleCost]
FROM [MarchCalls]
where [AccNo] in (select [accno] from [Tariffs] where [Tariff] = 'Tariff1')
union
SELECT 'Tariff2' as [Tariff], Count([Number]) as [Number of calls] ,sum(convert(bigint,[Seconds]))/60 as [Minutes], sum([CustomerCost]) as [Customer Cost], sum([WholesaleCost]) as [WholesaleCost]
FROM [MarchCalls]
where [AccNo] in (select [accno] from [Tariffs] where [Tariff] = 'Tariff2')
union
SELECT 'Tariff3' as [Tariff], Count([Number]) as [Number of calls] ,sum(convert(bigint,[Seconds]))/60 as [Minutes], sum([CustomerCost]) as [Customer Cost], sum([WholesaleCost]) as [WholesaleCost]
FROM [MarchCalls]
where [AccNo] in (select [accno] from [Tariffs] where [Tariff] = 'Tariff3')
union
SELECT 'Total' as [Tariff], Count([Number]) as [Number of calls] ,sum(convert(bigint,[Seconds]))/60 as [Minutes], sum([CustomerCost]) as [Customer Cost], sum([WholesaleCost]) as [WholesaleCost]
FROM [MarchCalls]
Quelques points: Convert (bigint) est nécessaire en raison du volume des dossiers et les chiffres qui y sont Les retour recordset doit rester dans ce format Ces données (et base de données) est strictement en lecture seule SQL server 2012
cette requête prend plus de temps vers la fin de chaque mois et je dois obtenir le temps d'arrêt
Quelqu'un peut-il m'aider à rationaliser cela?
union changement à l'union tout – SQLMenace