我有一张桌子,里面有一大堆记录。
表看起来像这样(简化):
ID DoID DoQty DoType DoValue
1 17 1 Door 15
2 17 -1 Door -15
3 18 1 Window 75
4 19 1 Bed 125
5 19 1 Bed 134
所以这就是我想拉的
ID DoId DoQty DoType DoValue
3 18 1 WIndows 75
4 19 1 Bed 125
5 19 1 Bed 134
我不需要 DoID=17,因为它有第二行,其中 DoQty 为 -1。所以整体 DoQty = 0。我只需要没有 DoQty=-1 的记录。这里的问题是我不想按 DoID 分组我希望能够看到整个记录行(没有分组依据)
编辑:
不幸的是,我可能没有正确解释我的问题。基本上,如果我运行以下查询,我会得到正确的计数,但是我的目标是获取每行的详细信息。
SELECT t.DoID,
'Available' = Sum(t.DoQty)
From t
GROUP BY t.DoID
这给了我无法做任何事情的分组结果。
我们可以在这里使用条件聚合:
WITH cte AS (
SELECT DoID
FROM yourTable
GROUP BY DoID
HAVING SUM(CASE WHEN DoQty < 0 THEN 1 ELSE 0 END) = 0
)
SELECT *
FROM yourTable
WHERE DoID IN (SELECT DoID FROM cte);
这将返回DoID
其记录组中没有任何DoQty
负值的每一个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句