1

SQL Server 2008 を使用しています

これが結果の表です

ItemCode   ItemName            Branch     Total Weight
------------------------------------------------------
FBV0001    SML WATER ARWA      Bayan         144.00 
FDR0014    RED LENTIL          Al Balad     3000.00 
FDR0014    RED LENTIL          Solidere    13500.00 
FDR0017    EGYPTIAN RICE       Solidere    75500.00 

以下のように結果を変更する方法

ItemCode   ItemName            Bayan     Al Balad    Solidere
--------------------------------------------------------------
FBV0001    SML WATER ARWA      144.00        0            0 
FDR0014    RED LENTIL            0        3000.00         0 
FDR0014    RED LENTIL            0           0        13500.00 
FDR0017    EGYPTIAN RICE         0           0        75500.00

クエリをたくさん試しましたが、うまくいきません。これを入手する方法を教えてください。

4

2 に答える 2

1

Pivotテーブル演算子を使用します。このようなもの:

WITH CTE
AS
(
  SELECT *, ROW_NUMBER() OVER(ORDER BY ItemCode) AS RN
  FROM tablename
)
SELECT 
  ItemCode,
  ItemName,
  [Bayan], [Al Balad], [Solidere]
fROM CTE AS t
PIVOT
(
  MAX(TotalWeight)
  FOR Branch IN ([Bayan], [Al Balad], [Solidere])
) AS p;

注意:を使用してROW_NUMBER()、グループ化に使用する一意の ID を生成しました。a を使用しなかった場合ROW_NUMBER()、2 つの行から 1 つの行のみが取得されます。

FDR0014      RED LENTIL
FDR0014      RED LENTIL

ここで実際にそれを見てください:

これにより、次のことが得られます。

| ITEMCODE |       ITEMNAME |  BAYAN | AL BALAD | SOLIDERE |
------------------------------------------------------------
|  FBV0001 | SML WATER ARWA |    144 |   (null) |   (null) |
|  FDR0014 |     RED LENTIL | (null) |     3000 |   (null) |
|  FDR0014 |     RED LENTIL | (null) |   (null) |    13500 |
|  FDR0017 |  EGYPTIAN RICE | (null) |   (null) |    75500 |
于 2013-04-28T11:57:12.080 に答える