2

以下のクエリを実行しようとすると、エラーが発生します

キーワード「convert」付近の構文が正しくありません

どこで間違えたのかわからない。qty フィールドのデータ型は nchar なので、convert 関数を使用して合計を求めました。

select column_date, [red] as red, [blue] as blue, [green] as green, [yellow] as yellow 
from
(select * from table1) as t1
pivot
(
sum(convert(int,qty)) 
For color in 
([red], [blue], [green], [yellow])
) as SumofQuantityforeachcolor

ここにテーブルがあります

column_date | color | qty | supplier
1 June 2012 | red   | 2   | XY
1 June 2012 | red   | 1   | AB
1 June 2012 | blue  | 4   | CD
1 June 2012 | blue  | 1   | XY
2 June 2012 | yellow| 13  | CD
2 June 2012 | green | 45  | CD
2 June 2012 | blue  | 32  | AB
2 June 2012 | red   | 37  | XY
2 June 2012 | red   | 2   | XY
2 June 2012 | red   | 1   | AB
2 June 2012 | blue  | 4   | CD
3 June 2012 | red   | 1   | AB
3 June 2012 | blue  | 4   | CD
3 June 2012 | blue  | 1   | XY
3 June 2012 | yellow| 13  | CD
3 June 2012 | green | 45  | CD
3 June 2012 | blue  | 32  | AB

等々...

4

2 に答える 2

3

サブクエリでは使用しないselect *でください。必要なすべての列をリストし、sum()関数ではなくフィールド リストで型キャストを行います。

ピボットの集計関数は、式を引数として取りません。列を指定する必要があります。

<pivot_clause> ::=
        ( aggregate_function ( value_column [ [ , ]...n ]) 
        FOR pivot_column 
        IN ( <column_list> ) 
    )

あなたはおそらくこのようなものを探しています。

select column_date, [red] as red, [blue] as blue, [green] as green, [yellow] as yellow 
from (
     select column_date,
            color,
            cast(qty as int) as qty
     from table1
     ) as T
pivot
     (
     sum(qty) 
     for color in ([red], [blue], [green], [yellow])
     ) as SumofQuantityforeachcolor

SE-データ

于 2012-07-05T18:02:11.843 に答える
0

で試しましたcast(gty as int)か?

于 2012-07-05T15:39:42.877 に答える