1

2 つのテーブルがあり、additionalcolorstoypattern が 1 つしかない for toys を表示する必要があります。例 (FW18、FK97、FK38、LX74)。Toytypestoからの左外部結合を使用しToyadditionalcolor、サブクエリを実行して、toyname のみを持つ toypattern を見つけました。しかし、以下の結果クエリのような結果をまだ取得できません。

以下の query1 テーブルと同様の結果を得るには、コードのどの部分を変更する必要があるか教えてください。

おもちゃの種類

ToyPattern   ToyName           mainColor
----------   ---------------   ---------
  F692         Dino             pink       
  F692         Elephant         pink         
  FK38         Elephant         pink         
  FK97         Giraffe          purple     
  FW18         Sonic            pink       
  LX73         Kangaroo         pink       
  LX73         Cow              blush       
  LX73         Dog              pink       
  LX74         Cat              plum        

おもちゃAdditionalColor

 ToyPattern  ToyName     firstColor    additionalColor
 ----------  ----------  -----------   ----------------
    FK38     Elephant    pink          orange
    FK38     Elephant    pink          yellow
    LX74     cat         plum          dark pink
    LX74     cat         plum          pale pink

望ましい出力:

ToyPattern  ToyName     color 1      color 2      color 3      color 4      color 5      
----------- ----------  ------------ ------------ ------------ ------------ ------------
FK38        Elephant    pink         orange       yellow       NULL         NULL    
FK97        Giraffe     purple       NULL         NULL         NULL         NULL
FW18        Sonic       pink         NULL         NULL         NULL         NULL
LX74        cat         plum         dark pink    pale pink    NULL         NULL

以下は私のSQLコードです。

select distinct 
    toytypes.toypattern,
    toyname,
    toytypes.flowerBreed,
    toytypes.firstColor as 'color 1'
from 
    Toytypes 
left join 
    ToyAdditionalColor on ToyAdditionalColor.toypattern = Toytypes.toypattern
where 
    toytypes.toypattern in 
              (select Toypattern
               from Toytypes 
               group by toypattern
               having count(toypattern) < 2)
4

1 に答える 1

0

ToyAdditionalColor うーん、ToyPattern、ToyName、Color、SortOrder のようになるように正規化することから始めたいと思います。

データの例: 'FK38', 'Elephant', 'pink', 1.

2 行目:「FK38」、「エレファント」、「オレンジ」、2。

その後、使用できますPIVOT-現時点ではManagement Studioを持っていませんが、次のようになると思います。

SELECT
  ToyPattern
  , ToyName
  , 'color 1' = 1
  , 'color 2' = 2
  , 'color 3' = 3
  , 'color 4' = 4
  , 'color 5' = 5
FROM (  
  SELECT
  ToyPattern
  , ToyName
  , SortOrder
  , Color
  FROM
    dbo.ToyAdditionalColor
) AS ToyAdditionalColor PIVOT (
  MAX (Color) FOR SortOrder IN (1,2,3,4,5)
) AS PivotTable
于 2012-06-17T10:43:54.370 に答える