我有一個包含67列和大約36,000行的表,我需要根據其中兩列運行SELECT。在單表中選擇數據與1:多關係
重要的列是FINANCIAL_ACCOUNT_ID,EVENT_DESCRIPTION。
FINANCIAL_ACCOUNT_ID是每個帳戶的唯一編號,但在表格中可能不唯一。事件描述不是唯一的。事件描述可以包含'事件1''事件2''事件3'等等。
所以表看起來是這樣的:
TABLE
+----------------------+-------------------+-------------+
| FINANCIAL_ACCOUNT_ID | EVENT_DESCRIPTION | OTHER_STUFF |
+----------------------+-------------------+-------------+
| 1121 | Event 1 | n/a |
| 107401 | Event 2 | n/a |
| 256483 | Event 1 | n/a |
| 1121 | Event 3 | n/a |
| 107401 | Event 1 | n/a |
| 363586 | Event 1 | n/a |
| 546875 | Event 1 | n/a |
| 546875 | Event 2 | n/a |
+----------------------+-------------------+-------------+
RESULT
+----------------------+-------------------+-------------+
| FINANCIAL_ACCOUNT_ID | EVENT_DESCRIPTION | OTHER_STUFF |
+----------------------+-------------------+-------------+
| 107401 | Event 2 | n/a |
| 107401 | Event 1 | n/a |
| 546875 | Event 1 | n/a |
| 546875 | Event 2 | n/a |
+----------------------+-------------------+-------------+
我需要得到返回的是整個行是否有與既有「事件1」和「事件2」財務帳戶ID。
我試着使用的條款內合併聯接......在我的最新嘗試,我添加了一個計數(financial_account_id)如:
select FINANCIAL_ACCOUNT_ID, EVENT_DESCRIPTION, COUNT(FINANCIAL_ACCOUNT_ID)
FROM master
group by FINANCIAL_ACCOUNT_ID
HAVING COUNT(FINANCIAL_ACCOUNT_ID) >1;
然而,這裏是我的結果與select語句看到:(我說我需要整個行,但是一旦我得到正確的結果返回,我可以過濾掉無關列,我不需要)
Financial_Account_ID | Event_Description | COUNT(Financial_Account_ID)
107401 | Event 2 | 2
546875 | Event 1 | 2
任何幫助像這樣的SQL查詢應該看起來像什麼? 詳情:MariaDB的10,數據庫名稱:JuneEvents,表名:主 我也得到了在MS-SQL 2012數據庫快速
編輯副本:@Tim - 對不起,我需要每個帳戶匹配「事件1」和「事件2」都會拋出事件3以及其他可能存在的事件。這說明了嗎?
SOLUTION: 我用@戈登的第2個查詢與JOIN作爲起跳點,並結束了,看上去像這樣的最終查詢(注:現在有一些額外的領域,但我最初的後添加他們查詢返回的結果propper從最初的數據集。)
SELECT t.financial_account_id, t.event_description, t.sold_quantity, t.paid_amount
FROM master t JOIN
(SELECT financial_account_id
FROM master t
WHERE event_description IN ('Event 1', 'Event 2')
GROUP BY financial_account_id
HAVING COUNT(DISTINCT event_description) = 2
) tt
ON tt.financial_account_id = t.financial_account_id
WHERE (event_description IN ('Event 1', 'Event 2') AND (sold_quantity > 0));
你從來沒有給我們的邏輯來確定_which_' Event_Description'返回最終結果。 –
「GROUP BY」功能非常強大,但使用任何日期時間列也可幫助區分結果。 根據Event_1和Event_2的拆分方式(它們是否可以同時發生?是否可以發生NULL值?),您可能需要使用子查詢。 顯然,我們需要更多關於業務邏輯和規則的細節。 –
@RCMaples所以你是說你想要匹配有事件1和2的帳戶,而_only_事件1和2? –