Bonjour,Comment utiliser PIVOT dans SQL Server 2005 stockée Procédure d'adhésion Deux Vues
J'ai 2 vues: ICCUDays qui contient un enregistrement par compte avec des champs compte et ICCUDays, ICCUEnctrSelectedRevCatsDirCost qui contient plusieurs enregistrements par compte avec des champs ACCOUNT, UBCATEGORY et DirectCost.
Mon objectif: créer une procédure stockée qui génère un enregistrement par ACCOUNT avec ICCUDays et DirectCost par UBCATEGORY. Ce sera un tableau croisé ou un pivot et doit permettre la possibilité de null dans un ou plusieurs seau de catégorie de coût direct. Enfin, ce tableau croisé ou ce pivot doit être envoyé à une nouvelle table EnctrUBCatPivot. Questions: Quelle est la syntaxe PIVOT correcte pour le scénario ci-dessus? Étant donné que je veux surpasser le coût direct pour de nombreuses entrées UBCATEGORY, comment écrire le TSQL pour itérer sur ceux-ci et pivoter par compte et UBCATEGORY? Tout cela est-il accompli dans un sproc, ou doit-il être séparé en plusieurs sprocs pour écrire les résultats sur une table?
Voici le code que j'ai écrit jusqu'à présent:
ALTER PROCEDURE [dbo].[spICCUMain]
-- Add the parameters for the stored procedure here
AS
declare @columns varchar(8000)
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT @columns = COALESCE(@columns + ',[' + cast(UBCATEGORYmid as varchar) + ']','[' + cast(UBCATEGORYmid as varchar)+ ']')
FROM vwICCUEnctrSelectedRevCatsDirCost
GROUP BY UBCATEGORYmid
DECLARE @query VARCHAR(8000)
SET @query = '
SELECT *
FROM vwICCUEnctrSelectedRevCatsDirCost
PIVOT
(
MAX(DirectCost)
FOR [UBCATEGORYmid]
IN (' + @columns + ')
)
AS p'
EXECUTE(@query)
END
Cela fonctionne bien en ce qu'elle génère et compte tous les coûts directs pour chaque UBCATEGORY. Cependant, j'ai besoin de joindre en interne à vwICCUDAYS sur ACCOUNT pour ajouter une colonne au pivot pour ICCUDays. Les colonnes pivot finales doivent être Account, ICCUDays, Coût direct pour chaque UBCATEGORYmid. Je ne suis pas très familier avec la syntaxe coalesce et ne peux donc pas discerner comment la modifier pour ajouter d'autres colonnes, et je ne sais pas comment/où ajouter la syntaxe de jointure interne pour ajouter ICCUDays.
Quelqu'un peut-il me diriger dans la bonne direction? Merci, Sid
Y a-t-il une raison particulière d'utiliser les vues comme base de la requête? –