2015-11-06 98 views
-3

我有这个数据集,我需要弄清楚, 对于哪个帐户有一个-ve和一个给定的日期通过这个月+ ve的金额。sql |需要查询来过滤数据

也显示这些账户与各自的金额和日期

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日期已经一去不复返了,因为它有两个+已经交易):

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

此问题未显示任何研究工作。 –

+0

你写了什么SQL来试图做到这一点? – danjuggler

+0

从table_name选择日期,acct,amt,其中'x'和'z'之间的日期按日期排序,acct;现在我可以看到像上面显示的数据,但我无法弄清楚用什么来推进。我是初学者。如果任何人都可以指出我正确的方向,我会明白这一点。 – ASH

回答

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" 

OUTPUT

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

没有这个没有它 – ASH

+0

检查更新 –

+0

非常感谢你这么多胡安,但这是我设法做的帮助其他来源:select * from (选择日期,acct,amt, 情况下,当时<0然后AMT否则为0端作为amt_nve, 情况下,当AMT> 0,那么AMT否则为0端作为amt_pve 从TABLE_NAME ) 其中amt_nve <0且amt_pve> 0 ; – ASH