我有一个公用表表达式查询,它返回这组数据:
Board_Name Method Source TicketCount Percentage
IT Services NULL NULL 73 0.7
IT Services Call Call 6929 69.7
IT Services Call CallByReception 4303 43.3
IT Services Call CallBySupport 2626 37.9
IT Services Chat Chat 8 0.1
IT Services EmailConnector EmailConnector 2047 20.6
IT Services Internal Internal 51 0.5
IT Services Portal Portal 829 8.3
在SELECT
语句中,我想返回上面结果 EXCEPT 中的所有行,其中Method值等于'Call'且Source值相等“打电话”。
所以查询的结果将是:
Board_Name Method Source TicketCount Percentage
IT Services NULL NULL 73 0.7
IT Services Call CallByReception 4303 43.3
IT Services Call CallBySupport 2626 37.9
IT Services Chat Chat 8 0.1
IT Services EmailConnector EmailConnector 2047 20.6
IT Services Internal Internal 51 0.5
IT Services Portal Portal 829 8.3
;WITH CTE
AS
(--select statement returns the above result
--details are not important
)
SELECT *
FROM CTE
WHERE --I need to include all of the rows except the row that has the Method and Source columns are equal to 'Call'
如何构造where
子句以不包含一行?
答案 0 :(得分:1)
一种方式是(Demo)
WHERE NOT 'Call' = ALL(SELECT ISNULL(Method,'') UNION SELECT ISNULL(Source,''))
或沿着类似的行(Demo)......
WHERE 'Call' <> ANY(SELECT ISNULL(MS,'') FROM (VALUES (Method),(Source)) V(MS))
或 - Demo
WHERE NOT EXISTS (SELECT 'Call' INTERSECT SELECT Method INTERSECT SELECT Source)
答案 1 :(得分:0)
使用<ul class="topnav" id="myTopnav">
<li><a class="active" href="#home">Home</a></li>
<li><a href="#news">News</a></li>
<li><a href="#contact" onclick="openSubMenu()">Contact</a>
<ul class="subnav" id="submenuNav" hidden >
<li><a href="#contact" class="submenu">Sub Menu1</a></li>
<li><a href="#contact" class="submenu">Sub Menu2</a></li>
<li><a href="#contact" class="submenu">Sub Menu3</a></li>
</ul>
</li>
<li><a href="#about">About</a></li>
<li class="icon">
<a href="javascript:void(0);" style="font-size:15px;" onclick="myFunction()">☰</a>
</li>
</ul>
<div style="padding-left:16px">
<h2>Responsive Topnav Example</h2>
<p>Resize the browser window to see how it works.</p>
</div>
逻辑来实现此目的
AND/OR
<强>样本强>
架构&amp;样本数据
SELECT *
FROM CTE
WHERE ( Method <> 'Call' AND Source <> 'Call' )
OR ( ( Method = 'Call' OR Method IS NULL ) AND ( Source <> 'Call' OR Source IS NULL ) )
OR ( ( Source = 'Call' OR Source IS NULL ) AND ( Method <> 'Call' OR Method IS NULL ) )
结果:
CREATE TABLE cte
([Board_Name] varchar(25), [Method] varchar(15), [Source] varchar(15), [TicketCount] int, [Percentage] numeric(22,6))
;
INSERT INTO cte
([Board_Name], [Method], [Source], [TicketCount], [Percentage])
VALUES
('IT Services',NULL, NULL, 73, 0.7),
('IT Services','Call', 'Call', 6929, 69.7),
('IT Services','Call', 'CallByReception', 4303, 43.3),
('IT Services','Call', 'CallBySupport', 2626, 37.9),
('IT Services','Chat', 'Chat', 8, 0.1),
('IT Services','EmailConnector', 'EmailConnector', 2047, 20.6),
('IT Services','Internal', 'Internal', 51, 0.5),
('IT Services','Portal', 'Portal', 829, 8.3)