【发布时间】:2012-11-09 03:04:45
【问题描述】:
我有一个存储汇总数据的临时表,我想创建一个查询,看看我是否可以稍微清理一下数据。我以为这很容易,但事实证明要困难得多。也许这很容易,而我只是走错了路。
我要做的只是删除 Item = 'TOTALS' 但名称只出现两次的行。因此,在下表中,应删除第 7 行和第 9 行。请注意,没有钥匙。
名称。项目......Dlvrd
--------------------------
鲍勃。 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'
)
【问题讨论】: