如果這個問題已經得到回答,我很抱歉。我對 SQL 還是很陌生。
我有一個包含客戶端資料的資料庫。
資料庫中的每一行都包含一個 customer_number 和一個 end_record_date(如果客戶仍然活躍,它是過去的日期或“00:00:00”)。
我需要找到在資料庫中至少出現兩次的所有客戶行(因此他們的 customer_number 至少出現在兩行上)。但我只想獲取特定行,如果該 customer_number 至少在兩行上處于活動狀態(因此該特定客戶的 end_record_date 的值至少需要在兩行上為“00:00:00”)。
所以這就是我想要找到的:
| row_id | 顧客號碼 | 結束記錄日期 |
|---|---|---|
| 1 | 12345 | '00:00:00' |
| 346 | 7568 | '2021-01-01' |
| 89 | 7568 | '00:00:00' |
| 1287 | 12345 | '00:00:00' |
在上面的示例中,我希望回傳第 1 行和 1287 行,因為它們符合我的條件。rowid 89 和 346 不符合我的標準
我將如何繼續這件事?
我在 .sd3b 資料庫上使用 sqlitestudio
uj5u.com熱心網友回復:
customer_number如果customer_number在HAVING子句中分組并設定條件,則可以獲得所需的s :
SELECT customer_number
FROM tablename
GROUP BY customer_number
HAVING SUM(end_record_date = '00:00:00') >= 2;
要獲取滿足您條件的表的所有行,請使用運算子IN:
SELECT *
FROM tablename
WHERE customer_number IN (
SELECT customer_number
FROM tablename
GROUP BY customer_number
HAVING SUM(end_record_date = '00:00:00') >= 2
);
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/358097.html
