2015-05-02 2 views
1

Это мое заявление мне нужно Order By date, но я не могу это сделать какой-либо помощи, пожалуйста,Заказывайте В Pivot Оператор Select

Мой код

PROCEDURE [sal_pivottable_day_plan] 
AS 
    DECLARE @cols AS NVARCHAR(MAX), 
      @query AS NVARCHAR(MAX), 
      @DtFrom date, @DtTo date 

    SELECT @cols = STUFF((SELECT distinct ',' + QUOTENAME(sal_day_plan_0015.MyDate) FROM sal_day_plan_0015 

    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'') 
    SET @query = 'SELECT dealers_sril, dealers_name, stop_value, hanging_value, dealers_balanc, paid_val_motkhrat, ' + @cols + ' 
        FROM ( 
         SELECT dealers_sril, dealers_name, stop_value, hanging_value, dealers_balanc, paid_val_motkhrat, paid_val_between,MyDate 
         FROM sal_day_plan_0015 
         )x 
        PIOVT 
        ( 
        min(paid_val_between)for MyDate in (' + @cols + ') 
        ) p'    

    EXEC(@query)    

    RETURN 0 
+0

что возвращается ?. то, что вам нужно вернуть, говорит ясно –

ответ

1

Вы можете псевдоним ',' + QUOTENAME(sal_day_plan_0015.MyDate) as c и порядок этой колонки:

PROCEDURE [sal_pivottable_day_plan] 
AS 
DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX),@DtFrom date ,@DtTo date 

    SELECT @cols = STUFF((SELECT distinct ',' + QUOTENAME(sal_day_plan_0015.MyDate) AS c FROM sal_day_plan_0015 
    ORDER BY c 
    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'') 

    SET @query = 'SELECT dealers_sril, dealers_name, stop_value, hanging_value, dealers_balanc, paid_val_motkhrat, ' + @cols + ' 
        FROM ( 
         SELECT dealers_sril, dealers_name, stop_value, hanging_value, dealers_balanc, paid_val_motkhrat, paid_val_between,MyDate 
         FROM sal_day_plan_0015 
         )x 
        PIVOT 
        ( 
        min(paid_val_between)for MyDate in (' + @cols + ') 
        ) p'    
EXEC(@query)    
RETURN 0 

PS: у вас есть ошибка в ключевом слове PIVOT.