如何在SQL Server中编写条件语句

时间:2015-04-28 20:38:34

标签: sql-server

我遇到了与查询SQL数据库有关的逻辑问题。我需要排除3个不同的类别和这些类别中包含的任何项目;但是,如果其中一个类别的项目符合另一个类别的标准,我需要保留该项目。

这是我在以当前版本查询数据库后将得到的示例输出:

ExampleDB | item_num | pro_type | area     | description

    1     | 45KX-76Y |   FLCM   | Finished | coil8x
    2     | 68WO-93H |   FLCL   | Similar  | y45Kx
    3     | 05RH-27N |   FLDR   | Finished | KH72n
    4     | 84OH-95W |   FLEP   | Final    | tar5x
    5     | 81RS-67F |   FLEP   | Final    | tar7x
    6     | 48YU-40Q |   FLCM   | Final    | bile6
    7     | 19VB-89S |   FLDR   | Warranty | exp380
    8     | 76CS-01U |   FLCL   | Gator    | low5
    9     | 28OC-08Z |   FLCM   | Redo     | coil34Y

item_num和description在一起表中,pro_type和area在2个单独的表中 - 总共3个表来从中提取数据。

我需要构建一个不会拉回任何item_num的查询,其中area等于:Finished,Final和Redo;但我还需要提取符合类型标准的任何item_num:FLCM和FLEP。最后,我的查询应如下所示:

ExampleDB | item_num | pro_type | area     | description

    1     | 45KX-76Y |   FLCM   | Finished | coil8x
    2     | 68WO-93H |   FLCL   | Similar  | y45Kx
    3     | 84OH-95W |   FLEP   | Final    | tar5x
    4     | 81RS-67F |   FLEP   | Final    | tar7x
    5     | 19VB-89S |   FLDR   | Warranty | exp380
    6     | 76CS-01U |   FLCL   | Gator    | low5
    7     | 28OC-08Z |   FLCM   | Redo     | coil34Y

2 个答案:

答案 0 :(得分:0)

你在寻找像

这样的东西吗?
SELECT *
FROM Table_1
JOIN Table_ProType ON Table_1.whatnot = Table_ProType.whatnot
JOIN Table_Area ON Table_1.whatnot = Table_Area.whatnot
WHERE Table.area NOT IN ('Finished','Final','Redo') OR ProType.pro_type IN ('FLCM','FLEP')

给出三个表的名称和加入标准将有助于我改进答案。

答案 1 :(得分:0)

试试这个:

select * from table
join...
where area not in('finished', 'final', 'redo') or type in('flcm', 'flep')