少し複雑ですが、次のようになります。
基本的に私の目的は、1 つの列が値 (列 A の最初の値、列 B の 2 番目の値など) を識別し、最後に合計の列を識別する動的クエリを生成することです。
その後、キューブを使用してグループ化を実行できます。これにより、値のすべての順列が合計され、異なる列でグループ化されます。例を見る
最終結果は次のようになります。
Total A B C D E
285.62 NULL NULL NA NA NA
これは、285.62 が値でソートされた最初と 2 番目の値の合計であることを示します。
DECLARE @columns varchar(max) = ''
DECLARE @allcolumns varchar(max) = ''
DECLARE @columnName varchar(1) = 'A'
DECLARE @select varchar(max) = ''
SELECT
@columns = @columns + ',''NA'' AS ' + @columnName,
@allcolumns = @allcolumns + ',' + @columnName,
@columnName = CHAR(ASCII(@columnName)+1)
FROM
#mytemptable
SET @columnName = 'A'
SELECT
@select = @select + CHAR(13) + 'UNION SELECT ' + CONVERT(varchar(100),totals) + ' AS totals' + STUFF(@columns,2+10*(ord-1),4,'''' + @columnName + ''''), @columnName = CHAR(ASCII(@columnName)+1)
FROM
(SELECT totals, ROW_NUMBER() OVER(ORDER BY totals) ord from #mytemptable)
A
SET @select = STUFF(@select,1,6,'')
SET @allcolumns = STUFF(@allcolumns, 1,1,'')
--PRINT (@select)
EXEC ( 'SELECT * FROM (
SELECT SUM(totals) AS Total, ' + @allcolumns + '
FROM (' + @select + ') A GROUP BY ' + @allcolumns + ' WITH CUBE
) sub WHERE Total = 285.62 ')