sql |需要查询来过滤数据

时间:2015-11-06 21:11:33

标签: sql group-by

我有这个数据集,我需要弄清楚, 对于哪个帐户,每个月的给定日期都有-ve和+ ve。

还要显示具有相应金额和日期的这些帐户

Date  acct   amt 
x      123   -1.1
x      123    2.3
y      234    1.4
y      234    1.5
y      234   -4.3
z      345    8.2
z      345    1.3

非常感谢您的帮助。

修改

Select date, acct, amt 
from table_name 
where date between 'x' and 'z' 
order by date, acct; 

现在我可以看到上面显示的数据,但我无法弄清楚要用什么来推进。

预期结果(z日期的帐户已消失,因为它有两个+ ve交易):

Date  acct   amt 
x      123   -1.1
x      123    2.3
y      234    1.4
y      234    1.5
y      234   -4.3

1 个答案:

答案 0 :(得分:0)

<强> SqlFiddleDemo

您决定使用0

做什么
SELECT Table1.*
FROM Table1
JOIN 
    (
    SELECT "Date", "acct"
    FROM Table1 
    GROUP BY "Date", "acct"
    HAVING 
        MIN("amt") < 0
    AND MAX("amt") > 0
    ) T
  ON Table1."Date" = T."Date"
 AND Table1."acct" = T."acct"

<强>输出

| Date | acct |  amt |
|------|------|------|
|    x |  123 | -1.1 |
|    x |  123 |  2.3 |
|    y |  234 |  1.4 |
|    y |  234 |  1.5 |
|    y |  234 | -4.3 |