0

SQL Server Management Studio 2008 で記述しようとしているクエリに関する質問です。2 つの行をプルしています。最初の行はヘッダー情報で、2 行目は特定の Line Item の情報です。実際のヘッダー情報は「列 0、1、2、3、4、... など」と表示されることに注意してください。

データは次のようになります。

ROW 1: Model # | Item Description| XS |  S  |  M  | L  | XL|
ROW 2:  3241   |  Gray Sweatshirt|    |  20 | 20  | 30 |   |

基本的に、これは、この特定のアイテムの小が 20 個、中が 20 個、大が 30 個あることを示しています。XSやXLはありません。

この情報を一列に並べるサブクエリを作成したいのですが、同時にXSサイズとXLサイズの下に表示されているように、数量が空白のサイズは除外してください。

すべてが完了したら、次のように表示したいと思います。

ROW 1: MODEL #| 3241 | ITEM DESCRIPTION | Gray Sweatshirt | S | 10 | M | 20 | L | 30 |

XSまたはXLは含まれていないことに注意してください。これらの列が表示されないようにするにはどうすればよいですか?

4

1 に答える 1

0

クエリもテーブル構造も投稿していないので、ID、説明、サイズの列があると思います。その場合は、これを実行して、テーブルと列の名前に置き換えるだけです。

DECLARE @columns varchar(8000)    
SELECT @columns = COALESCE (@columns + ',[' + cast(Size as varchar) + ']', '[' + cast(Size as varchar) + ']' )
            FROM   YourTableName
            WHERE     COUNT(Size) > 0

            DECLARE @query varchar(8000) = 'SELECT Id, Description, '
                + @columns +'
                FROM
                (SELECT Id, Description, Size
                 FROM YourTableName) AS Source
                PIVOT
                (
                    COUNT(Size)
                    FOR Size IN ('+ @columns +')
                ) AS Pvt'

            EXEC(@query)

とにかく、@MichaelFredicksonにも同意します。私はこのピボット ソリューションを実装しましたが、SQL から生データを取得した後、プレゼンテーション層にこれを処理させる方が絶対に優れています。そうでない場合は、データを 2 回処理することになります。1 つは SQL でテーブルを作成し、もう 1 つは c#​​/vb/other コードで値を読み取って表示するときにプレゼンテーションで処理します。

于 2013-02-05T22:23:16.630 に答える