我有一个存储汇总数据的临时表,并且想创建一个查询以查看是否可以稍微清理一下数据。我以为这很容易,但事实证明要困难得多。也许这很容易,而我只是错误地接近它。
我要做的只是删除 Item = 'TOTALS' 但名称只出现两次的行。因此,在下表中,应删除第 7 行和第 9 行。只是让你知道,没有钥匙。
姓名 。项目 ......Dlvrd
--------------------------
Bob 。102 .... 18
鲍勃。106 .... 32
鲍勃。108 .... 34
鲍勃。999 .... 184
鲍勃.. 总数。第702
章 64 ...... 86
约翰。总计。86
吉姆 .. 112 .... 131
吉姆 .. 总计 .. 131
简 . 10 .... 720
简。12 ........ 217
简.
第999章………… 867 总计 1848
我的第一次尝试包括添加一个包含 name 列计数的列,然后使用 where 子句,例如: where name != '2' 和 Item != 'TOTALS'。没有用,甚至在它们周围加上括号。它只是删除任何带有 2 或 Item = 'TOTALS' 的行。它完全忽略了“与”。这是我的sql:
select t.count, tr.*
From #TempRollup tr
join (
select
Name
, COUNT(Name) count
from #TempRollup
Group by Name
) as t on t.Name = tr.Name
where (
t.count != 2
and Item != 'TOTALS'
)
然后我尝试了这种方法,该方法涉及创建一个子查询来查找我想忽略的行,然后不选择它们。我的子查询抓取了正确的行,但是当整个事情运行时,什么都没有返回。:
Select *
FROM #TempRollup
WHERE NOT EXISTS(
select tr.*
From #TempRollup tr
join (
select
Name
, COUNT(Name) count
from #TempRollup
Group by Name
) as t on t.Name = tr.Name
where t.count = 2
and Item = 'TOTALS'
)