Я использую этого довольно много...
Исходный код:
if (guid != Guid.Empty) return guid;
else return Guid.NewGuid();
Новый код:
return guid.NewGuidIfEmpty();
Дополнительный метод:
public static Guid NewGuidIfEmpty(this Guid uuid)
{
return (uuid != Guid.Empty ? uuid : Guid.NewGuid());
}
Вам необходимо исправить следующее:
SELECT @listCol = STUFF(( SELECT distinct '], [' + [size]
FROM #t
FOR
XML PATH('')
), 1, 2, '') + ']'
Чтобы вернуть столбцы в правильном порядке. Возможно, вам придется сделать что-то вроде этого вместо использования DISTINCT
:
SELECT [size]
FROM #t
GROUP BY [size]
ORDER BY MIN(BucketNum)
Я только что видел эту ссылку, в которой используется CTE для создания списка столбцов (который, вероятно, можно было бы заказать) на лету без необходимости в динамическом sql:
http: //blog.stevienova.com/2009/07/13/using-ctes-to-create-dynamic-pivot-tables-in-sql-20052008/