我陷入了一种似乎很容易的困境,但我无法将其置于TSQL中。
我们说我有这张表
Service Master
LOCAL BRGIL
EREPO CROMST
NICLI CROMST
EXPORT NIGIL
我需要忽略Master中他们有价值的所有记录' CROMST'除非服务'是EREPO
到目前为止我已经尝试了
WHERE (Master <> 'CROMST' AND ([Service] <> 'EREPO'))
这只显示
Service Master
LOCAL BRGIL
EXPORT NIGIL
我也试过这个
WHERE (Master <> 'CROMST' AND (rtrim([Service])+rtrim(Master) <> 'EREPOCROMST'))
但仍然没有运气。
我知道这应该很容易,但我被封锁了
我看的结果是
Service Master
LOCAL BRGIL
EREPO CROMST
EXPORT NIGIL
答案 0 :(得分:2)
使用:
where master <> 'CROMST' or Service = 'EREPO'
评估可能的情况:
答案 1 :(得分:1)
SELECT * FROM
your_table
WHERE (Key2 != 'CROMST' OR Key1 = 'EREPO' )
将是我的方法
答案 2 :(得分:1)
使用案例功能:
DECLARE @myTable AS TABLE
(
[SERVICE] VARCHAR(8) ,
[Master] VARCHAR(8)
);
INSERT INTO @myTable ( [SERVICE] ,
[Master]
)
VALUES ( 'LOCAL', 'BRGIL' ) ,
( 'EREPO', 'CROMST' ) ,
( 'NICLI', 'CROMST' ) ,
( 'EXPORT', 'NIGIL' );
SELECT * FROM @myTable;
SELECT *
FROM @myTable
WHERE 1 = CASE WHEN ([MASTER] = 'CROMST')
THEN
CASE WHEN ([SERVICE] = 'EREPO')
THEN 1 -- special exception
ELSE 0 --disregard all others
END
ELSE 1 -- keep
END
答案 3 :(得分:0)
尝试:
WHERE Master <> 'CROMST'
OR (([Service] = 'EREPO') AND (Master = 'CROMST'))
答案 4 :(得分:0)
选择* 来自your_table a 哪里不存在(从your_table b中选择*,其中b.Master =&#39; CROMST&#39; 和b.Service&lt;&gt; &#39; EREPO&#39)
子查询查询Master具有值&#39; CROMST&#39;但是服务&#39;价值不是&#39; EREPO&#39;。
&#34;不存在&#34;过滤掉子查询结果。