1
私は誰かが私を助けることを望んでいます。私はSQL Server 2005でいくつかのデータをピボットしようとしており、私が探している結果を得ることができません。いくつかのデータをピボットする手助けが必要
これは私の現在のテーブルのスキーマです:私は、次のSQLを使用して、この結果を達成することができることを知っている
| ProductCode | AttributeA | AttributeB |
| 1 | 10 | 20 |
| 2 | 30 | 40 |
| 3 | 50 | NULL |
を::
| ProductCode | AttributeName | AttributeValue |
| 1 | AttributeA | 10 |
| 1 | AttributeB | 20 |
| 2 | AttributeA | 30 |
| 2 | AttributeB | 40 |
| 3 | AttributeA | 50 |
これは私が達成しようとしている結果である
SELECT DISTINCT ProductCode,
(SELECT AttributeValue
FROM attributes
WHERE ProductName = 'AttributeA' AND ProductCode=a.ProductCode) AttributeA,
(SELECT AttributeValue
FROM attributes
WHERE ProductName = 'AttributeB' AND ProductCode=a.ProductCode) AttributeB,
FROM attributes a
私が探している結果が得られますが、それは明らかに動的ではありません(実際は、私はより多くの属性タイプを持っているだけでなく、異なる製品は属性の異なるセットを持っています)また、テーブルを3回スキャンします。それはメンテナンスの悪夢でもあります。
私はSQL ServerのPIVOT機能を使用しようとしましたが、運はありませんでした。
誰でも手助けできますか?
ありがとうございました!私はこれをプラグインして、2つのランタイムエラーを除いて、うまくいった:(1)挿入と(2)宣言されたときにローカル変数を初期化する。私はSQL2005を使用しているので、私はそれが理由だと推測しています。あなたはテーブル機能の中でこのロジックを使う方法を知っていますか?私はそれと一緒に遊んで、それは非常に動的なので、私はそれがテーブルの機能と(したがってSPでなければならない)とは思えない。 SPの欠点は、私がそれに加わることができないことです。もう一度、ありがとう! – pdalbe01
ようこそ、申し訳ありませんが、SQL2005でそれをテストしていませんでした。私は –
を修正しました。 "インラインテーブル値関数では、TABLE戻り値は単一のSELECT文で定義されています。 http://msdn.microsoft.com/en-us/library/ms186755.aspx –