多个条件的SQL Server计数
对于下表,如何为select查询编写子查询 这样我就可以在给定Num的Inv=Esc时返回一个标志列 在下面的示例中,第二行与第五行是匹配的。 我试过了,但还是很困惑。谢谢 **此外,每个Num应该只有一个标志多个条件的SQL Server计数,sql,sql-server,count,Sql,Sql Server,Count,对于下表,如何为select查询编写子查询 这样我就可以在给定Num的Inv=Esc时返回一个标志列 在下面的示例中,第二行与第五行是匹配的。 我试过了,但还是很困惑。谢谢 **此外,每个Num应该只有一个标志 Num | Name |Inv |Esc|Flag 1) *785* | AB7851 |155 |496 2) *785* | AB7852 |**496 |496** |**Hit** 3) *785* | AB7853
Num | Name |Inv |Esc|Flag
1) *785* | AB7851 |155 |496
2) *785* | AB7852 |**496 |496** |**Hit**
3) *785* | AB7853 |518 |496
4) *785* | AB7854 |769 |496
5) 236 | AB785Q |**155 |155** |**Hit**
6) 236 | AB785R |496 |155
7) 236 | AB785S |518 |155
8) 236 | AB785T |747 |155
9) 236 | AB785U |769 |155
您可以尝试在需要时使用CASE
如果要更新标志列,可以尝试此操作
UPDATE T
SET Flag = (case when Inv = Esc then 'HIT' end )
我强烈建议您使用计算列执行此操作:
alter table t add flag as (case when inv = esc then 'hit' end);
查询表时,通常会计算计算列。这确保了值始终准确-无需创建插入和更新触发器。选择*,当inv=esc时,则选择1,否则0作为my_表中的标志结束;很抱歉,我不想向表中添加列,而是向select查询中添加一列,该查询使用标志提取数据。此外,由于库存被反复使用,因此必须为组中的每个Num添加列。因此,对于每个Num,其中Inv=Esc…..请将预期结果添加到问题中。我刚刚添加了它。谢谢。from T tt->from T t2抱歉,所有的T tt t1和t2让我感到困惑。@ORLANDOVAZQUEZ好的,我看到你编辑了你的问题,我编辑了我的答案。你是说我应该在连接中按原样插入这个子查询吗?我如何将它插入到我现有的查询中?例如,我的查询是currenlty:选择Num、Name、Inv、Esc From P Join S on P.Num=S.Num
alter table t add flag as (case when inv = esc then 'hit' end);