我知道标题没有意义,我不知道怎么改写它。
所以这就是我现在所面对的。我有一张桌子,一张大桌子,它有近2M行。这是表格,已经按NoRegis=1411940
和Jumlah>0
|| Kode || Nama || Kali || Hari || Resep || Jumlah ||
++======++======++======++======++=======++========++
||AL-128||SP 5 || || ||A ||5.00 ||
||AL-132||SP 10 || || ||A ||3.00 ||
||AL-132||SP 10 || || ||A ||7.00 ||
||DS-074||PARACE||3 ||1 ||R ||10.00 ||
||DS-119||ASP 81||1 ||1 ||R ||5.00 ||
||AL-242||VEN 2 || || ||A ||1.00 ||
||AL-242||VEN 2 || || ||R ||1.00 ||
我想要的结果只包含具有Resep =' R'的数据。像这样:
|| Kode || Nama || Kali || Hari || Resep || Jumlah ||
++======++======++======++======++=======++========++
||DS-074||PARACE||3 ||1 ||R ||10.00 ||
||DS-119||ASP 81||1 ||1 ||R ||5.00 ||
看,最后一个数据(AL-242)有两行,包括Resep =' R'和Resep =' A',我尝试过像
这样简单的事情SELECT Kode,Nama,Kali,Hari,Resep,sum(Jumlah) FROM Frm_Ranap
where NoRegis=1411940 and Jumlah>0 and resep<>'A' GROUP by Kode
但我仍然有AL-242,不应该在那里。我也试过像
这样的东西SELECT Kode,Nama,Kali,Hari,Resep,sum(Jumlah) FROM Frm_Ranap
WHERE kode not in (
select Kode FROM Frm_Ranap WHERE NoRegis=1411940 and Jumlah>0 and Resep='A')
and NoRegis=1411940 and Jumlah>0 GROUP by Kode
但每次我尝试运行此查询时,它都不会向我显示任何结果,也无法停止工作,可能是因为它有太多数据。
任何消化?
答案 0 :(得分:0)
让我们坚持第一个返回的查询。您只需将A
上的条件移至having
子句而不是where
子句:
SELECT Kode, Nama, Kali, Hari, Resep, sum(Jumlah)
FROM Frm_Ranap
WHERE NoRegis = 1411940 and Jumlah > 0
GROUP by Kode
HAVING sum(resep = 'A') = 0;
having
表达式计算每个组中的行数(即每个kode
)与条件匹配的行数。 = 0
指定组中没有此类行。
答案 1 :(得分:0)
您首先选择所有不具备您想要的内容的行:
SELECT Kode FROM Frm_Ranap where resep<>'R' GROUP by Kode
然后你选择你想要的,但不是第一个选择的那些:
SELECT Kode,Nama,Kali,Hari,Resep,sum(Jumlah) FROM Frm_Ranap where NoRegis=1411940 and Jumlah>0 and Kode not in (SELECT Kode FROM Frm_Ranap where resep<>'R' GROUP by Kode) group by Jumlah
答案 2 :(得分:0)
我认为这可能会对你有所帮助
SELECT Kode,Nama,Kali,Hari,Resep,sum(Jumlah)
FROM Frm_Ranap
WHERE NoRegis=1411940
AND Jumlah>0
AND resep<>'A'
AND SUBSTRING(Kode, 1, 2) != 'AL'
GROUP by Kode
SUBSTRING(Kode,1,2)!='AL'将过滤您想要消除的记录
答案 3 :(得分:0)
您可以使用not exists
选择kode
没有Resep
类型A
的{{1}}。通常,当子查询返回大的结果集并且表格被正确编入索引时,not exists
比not in
快。
select Kode,Nama,Kali,Hari,Resep,sum(Jumlah)
from Frm_Ranap t1
where NoRegis=1411940 and Jumlah>0 and Resep <> 'A'
and not exists (select 1 from Frm_Ranap t2
where t2.Kode = t1.Kode and t2.Resep = 'A'
and t2.NoRegis = 1411940 and t2.Jumlah > 0)
group by Kode
此查询可以利用(NoRegis,Kode,Resep,Jumlah)