Sql 嵌套AND或OR函数时使用案例的查询

Sql 嵌套AND或OR函数时使用案例的查询,sql,sql-server,Sql,Sql Server,我有以下疑问: select imitmloclotq.item_code as "Item Code", imitmloclotq.lot_no as "Lot #", format(imitmloclotq.qty_on_hand, 'n2') as "Qty On Hand", imitmloclotq.sub_inv_code as "Location", imitmloclotq.

我有以下疑问:

select      imitmloclotq.item_code as "Item Code",
            imitmloclotq.lot_no as "Lot #",
            format(imitmloclotq.qty_on_hand, 'n2') as "Qty On Hand",
            imitmloclotq.sub_inv_code as "Location",
            imitmloclotq.locator_code as "Sub Location"

from        imitmloclotq (nolock)

where       qty_on_hand !=0

order by    item_code, lot_no
它会吐出大量数据,如下所示:

Item Code           Lot #   Qty On Hand Location    Sub Location
-----------------------------------------------------------------
30501302            2177        5.00    F1          7C          
30501305            1512        4.50    F1          5E          
30501305            1512        -0.67   F1          FLOOR       
30501306            1513        14.50   F1          5E          
30501310            2229        31.81   F1          2A          
30501312            1919        5.00    F1          4B  
但我想添加一个称为Multiple Locations的列,如果行与上面的行是同一项,但位置或子位置不同,则会显示Multiple。例如,上述项目30501305在两个不同的子位置5E和地板上有两个批次。另一项可能具有相同的子位置,但位置可能不同

我需要一些这样的代码,但我真的不知道:

CASE 
   WHEN (imitmloclotq.item_code = previous row imitmloclotq.item_code) 
        AND (OR(imitmloclotq.sub_inv_code != previous row imitmloclotq.sub_inv_code, imitmloclotq.locator_code != previous row imitmloclotq.locator_code)) 
      THEN "Multiple" 
      ELSE "" 
END

根据您的描述,您需要:


它应该在两行上都显示多个吗?太棒了!非常感谢你!我把它清理干净了,它工作得很好。再次感谢,现在你为我指明了正确的方向,我发现了这个非常有用的链接,干杯。
select i.item_code as "Item Code",
       i.lot_no as "Lot #",
       format(i.qty_on_hand, 'n2') as "Qty On Hand",
       i.sub_inv_code as "Location",
       i.locator_code as "Sub Location"
       (case when lag(i.sub_inv_code) over (partition by item_code order by lot_no) <> i.sub_inv_code or
                  lag(i.locator_code) over (partition by item_code order by lot_no) <> i.locator_code
             then 'Multiple'
         end) as new_column                  
from imitmloclotq i
where qty_on_hand <> 0
order by item_code, lot_no;