我有一个表需要更新,但是我不确定如何去做。这是架构
t1.id, t1.line, t1.item, t1.type
t2.id, t2.t1_id
t3.t2_id, t3.t1_line, t3.quantity1, t3.quantity2
t3基本上维护着t1中特定项目的数量。
在此查询中,t3将具有n条记录。这个想法是,对于t3中的每个条目n,t1中将有一些应该与之相关联的项目。我需要计算这些项目并将t3.t1_quantity1设置为该计数。
使用上面的模式,在一个查询中,我想知道第1行有多少个项目是类型0,第1行有多少个项目是类型1,结果输入到t3.quantity1和t3中。数量2。与第2行相同,如果t3中有更多行,则依此类推。
查询末尾的t3将显示以下内容
1, 1, 4, 2
1, 2, 4, 1
1, 3, 8, 3
我该怎么做?
答案 0 :(得分:2)
您需要将UPDATE
和JOIN
与CASE WHEN
和COUNT
配合使用。
quantity1
表中的quantity2
列中获取line
,t1
计数。join
t2
,t3
的{{1}}表t1.line
到UPDATE
表的数据。看起来像这样。
t3
[结果] :
UPDATE result
SET quantity1 = t.qty1,
quantity2 = t.qty2
FROM(
select line,
COUNT(case when type = 0 then 1 END) qty1,
COUNT(case when type = 1 then 1 END) qty2
from t1
GROUP BY line
) t
INNER JOIN t2 on t2.t1_id = t.line
inner join t3 result on t.line = result.t1_line