0

私はここにこのSQLコードを持っています。

SELECT cl.clientid,
       cl.clientname,
       cl.billingdate,
       cp.startdate,
       cp.expiration, 
       (SELECT COUNT(*)
            FROM invoice 
            HERE client = cl.clientid) AS invoicecount  
FROM client cl
INNER JOIN clientplan cp ON cp.client = cl.clientid
WHERE cl.isbilled = 1 AND expiration is NULL AND expiration > '2012-06-22'

私の問題は、クライアントが3つのクライアントプランを持つ可能性があり、それらに有効期限があるか、有効期限がNULLであるということです。有効期限が切れていないか、NULLである行を取得しようとしています。

私は何が間違っているのですか?

4

1 に答える 1

4

よくわかりませんが、これはあなたが望むものではありません:

SELECT cl.clientid, cl.clientname, cl.billingdate, cp.startdate, cp.expiration, 
(select count(*) from invoice where client = cl.clientid) as invoicecount  
FROM client cl
inner join clientplan cp on cp.client = cl.clientid
where cl.isbilled = 1 and (expiration is NULL or expiration > '2012-06-22')

およびの代わりにまたはを使用して、有効期限を設定します。有効期限をnullにすることはできず、> '2012-06-22' .. ..

于 2012-06-22T15:04:15.953 に答える