如何在同一表的另一列中使用基于true或false的数据更新SQL列?

时间:2019-03-19 13:15:11

标签: sql sql-server if-statement sql-update

请参阅附件图片

enter image description here

我想根据Supplier & Agent列中的信息更新true或false的Supplier_Agent列。我该怎么办?

另外,某些记录在Supplier_Agent列中没有任何信息,因此对于它们来说,两个Supplier & Agent列都将是FALSE

3 个答案:

答案 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软件中使用。