Sql-Server

根據表 A 在其行中的值將表 A 中的值插入或更新到表 B 的列中?

  • July 7, 2021

我有一個表,其中包含具有值的屬性名稱,但每一行都是具有其值的屬性,

所以我創建了另一個表,其中包含所有可能的屬性名稱以將其展平,以便每一行都包含每個項目的所有值。

如何獲取第一個表並將每個給定 itemId 的數據插入到相應列下的上表中?

我還需要考慮有超過一百個不同的屬性名稱,並不是所有的項目都會有每個屬性或值。我不確定我應該向哪個方向解決這個問題。

select itemid, 
      MAX(case 
             when itemattributename ='Application' then itemattributevalue 
             ELSE NULL END),
      MAX(case 
             when itemattributename ='Color' then itemattributevalue 
             ELSE NULL END)Color,
      ISNULL(MAX(case 
             when itemattributename ='Environmental Conditions' then 
                  itemattributevalue 
             ELSE NULL END),'')[Environmental Conditions],
      MAX(case 
             when itemattributename ='Material' then itemattributevalue 
            ELSE  NULL  END)Material
 from item
group by itemid

上述解決方案僅在您有一定數量的屬性時才有效,如果有 N 個屬性,您應該為此使用動態樞軸

引用自:https://dba.stackexchange.com/questions/295372