私は、Oracle 12cに2つのテーブルを持っているが、目標は旗NULLを持つtable2の中のすべての発生をカウントするだけでなく、TABLE1Oracleの2つのテーブルで出現を数える方法は?
TABLE1
ID,Name
001,Bob
009,Alice
015,Bob
019,Bob
026,Alice
500,Rob
505,Rob
table2の
に存在している名前の横に0を表示することですID,Flag,Timestamp
001,NULL,02/04/2016 16:33:13,991000
010,NULL,02/04/2016 16:33:14,991000
023,NULL,02/04/2016 16:33:15,991000
019,True,02/04/2016 16:33:16,991000
026,True,02/04/2016 16:33:17,991000
500,NULL,02/04/2016 16:33:18,991000
505,NULL,02/04/2016 16:33:19,991000
私が取得したいのですが
Name,COUNT
Alice,0
Bob,1
Rob,2
私の試みはこれまでのところです:あなたはtable2
とtable1
の位置を交換する必要が
SELECT table1.Name, count(table2.ID) AS count
FROM table1
LEFT OUTER JOIN table2 ON table2.ID = table1.ID
WHERE table2.Flag IS null
GROUP BY table1.Name
感謝を名前だけを取得してきた、あなたのソリューションが動作するはずですなぜ私が見たが、それは私のために動作しません。たぶん私は本当の仕事を単純化しすぎてしまったのですが、今日だけからレコードを制限する追加の句がありますが、なぜそれが重要かはわかりませんが、この時点で私は完全に失われています – Ninius86
でしょうか?日付フィールドはtable2の右側にありますか?その場合、左結合の右表の条件は、where節ではなくon節内にのみ配置する必要があります。そこに 'とtable2.datefield = trunc(sysdate)'を追加してください。 @ninius86 where句に配置すると、NULL値の比較のために結合が内部結合に変わります。 – sagi