请参阅附件图片
我想根据Supplier & Agent
列中的信息更新true或false的Supplier_Agent
列。我该怎么办?
另外,某些记录在Supplier_Agent
列中没有任何信息,因此对于它们来说,两个Supplier & Agent
列都将是FALSE
。
答案 0 :(得分:3)
将您的代理商和供应商列设置为bit
数据类型,然后进行更新
update t
set supplier=case when Supplier_Agent='Supplier' then 1 else 0 end,
agent =case when Supplier_Agent='Agent' then 1 else 0 end
在sql server中,没有布尔数据类型,因此0表示false
,而1表示true
答案 1 :(得分:2)
使用case when
update dbo.SuppliersNPD
set supplier= case when supplier_aggent='supplier' then 1 else 0 end,
agent= case when supplier_aggent='agent' then 1 else 0 end
答案 2 :(得分:0)
您应该使用case when
函数,以便可以设置检查特定条件的值。
update SNPD
set SNPD.supplier= case when SNPD.Supplier_Agent='Supplier' then 1 else 0
end,
SNPD.Agent= case when SNPD.Supplier_Agent='Agent' then 1 else 0 end
FROM SuppliersNPD as SNPD
我还建议您使用枚举而不是“供应商”和“代理商”来识别供应商的类型。例如,您可以创建一个名为Type
的列,并将代码100
用于供应商,将200
用于代理商。这似乎更复杂,但使表更易于维护,并且经常在ERP软件中使用。