-1

我有 Product 表有 Productid 和 Product_No 作为主键。现在,当我处理行并将其过滤为黑色、蓝色、红色、白色类别时。我知道如何过滤它,但问题是我必须更新另一个表 Product_Category(Product_Id as PK) 中的行数。但我根据 Product_DI 进行了更新。

说明:-用黑色产品表过滤产品表

Product_ID | Product_No | Price | Color
1          | 1          | 2.50  | Black
1          | 2          | 0.96  | Black
1          | 3          | 0.96  | Black
1          | 4          | 0.96  | Black
2          | 1          | 0.96  | Black
2          | 2          | 0.96  | Black
3          | 1          | 0.96  | Black

所以我必须更新 Product_Category

Product_ID | Color_CNT
1          | 4
2          | 2
3          | 1

请分享你的知识。感谢你的帮助。

4

1 回答 1

3

除非我遗漏了您的问题,否则您可以UPDATE使用第一张桌子对您的第二张桌子运行:

update t2
set Color_CNT = ColorCount
from table2 t2
left join
(
  select count(color) ColorCount, Product_ID
  from table1
  group by Product_ID
) t1
  on t2.product_id = t1.product_id;

请参阅带有演示的 SQL Fiddle

如果您需要INSERT数据,那么您可以执行以下操作:

insert into table2 (product_id, color_cnt)
select Product_ID,  count(color) ColorCount
from table1
group by Product_ID;

请参阅带有演示的 SQL Fiddle

这两个都可以在 SSIS 中完成,您将创建一个Execute SQL Task查询并将其放置在 SQL 语句字段中。这将在您的包运行时执行。

于 2012-10-04T18:14:41.530 回答