Помощь в методе опорных точек - PullRequest
0 голосов
/ 08 июля 2019

Справка В методе сводки я не хочу продолжать писать все идентификаторы, есть ли способ Нравится Делать это без записи всех идентификаторов

Я не знаю, как

SELECT  'Montant' AS IdClient,
*
FROM
(
SELECT   MontantTransaction,IdClient
FROM   Transactions
) AS TableSource
PIVOT
(
Sum(MontantTransaction)
FOR IdClient IN( [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24])
) AS TableDePivot;

я ожидаю увидеть этот код без ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13]....

1 Ответ

0 голосов
/ 08 июля 2019

Попробуйте это -

Пример временной таблицы и данных

Create Table #Transactions 
(

    IdClient varchar(3),
    MontantTransaction decimal(10,2)
)

insert into #Transactions values (1, 1000.00)
insert into #Transactions values (1, 200.00)
insert into #Transactions values (2, 800.00)
insert into #Transactions values (2, 700.00)
insert into #Transactions values (3, 1100.00)
insert into #Transactions values (4, 1400.00)

Запрос

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.IdClient) 
            FROM #Transactions c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT ''Montant'' AS IdClient, ' + @cols + ' from 
            (
                select 
                    MontantTransaction
                    , IdClient
                from #Transactions
           ) x
            pivot 
            (
                 Sum(MontantTransaction)
                for IdClient in (' + @cols + ')
            ) p '


execute(@query)

drop table #Transactions
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...