Sql 无法以列形式添加行数据 EmpID(主键)已支付的销售项目 ABC主席是的 WXY主席正在接受审查 每台笔记本电脑是的 ABC主席是的

Sql 无法以列形式添加行数据 EmpID(主键)已支付的销售项目 ABC主席是的 WXY主席正在接受审查 每台笔记本电脑是的 ABC主席是的,sql,sql-server,Sql,Sql Server,现在我想创建另一个表,在其中插入数据,如下所示 Emp ID椅子笔记本电脑 ABC 2 0 WXY 10 我要插入的问题是 从Emp中选择Emp Id,将(销售项目)计数为椅子,其中销售项目='椅子' 现在正在研究如何添加笔记本电脑(第三栏)。您是否可以建议您使用条件聚合: Select EmpId, sum(case when sales_item = 'chair' then 1 else 0 end) as chairs, sum(case when sal

现在我想创建另一个表,在其中插入数据,如下所示

Emp ID椅子笔记本电脑
ABC 2 0
WXY 10
我要插入的问题是

从Emp中选择Emp Id,将(销售项目)计数为椅子,其中销售项目='椅子'

现在正在研究如何添加笔记本电脑(第三栏)。您是否可以建议您使用条件聚合:

Select EmpId,
       sum(case when sales_item = 'chair' then 1 else 0 end) as chairs,
       sum(case when sales_item = 'laptop' then 1 else 0 end) as laptops
from EMP
group by EmpId;

没有理由将其存储在单独的表中。如果愿意,可以创建视图。然后,当您访问视图时,您知道数据是最新的。

您可以使用pivot获得预期的结果:

DECLARE @t TABLE(
EmpID varchar(3)
,SaleItems varchar(10)
,Paid varchar(20)
)

INSERT INTO @t VALUES
('ABC', 'chair', 'Yes')
,('WXY', 'chair', 'Under Review')
,('PER', 'Laptop', 'Yes')
,('ABC', 'Chair', 'Yes')

SELECT piv.EmpID,  ISNULL(piv.chair, 0) AS chair, ISNULL(piv.Laptop, 0) AS Laptop
FROM(
  SELECT EmpID, SaleItems, 1 cnt
  FROM @t
) x
PIVOT
(
  SUM(cnt)
  FOR SaleItems IN ([chair], [Laptop])
) piv

我建议不要将聚合数据存储在数据库中;使用
视图