2017-06-13 66 views
0

感謝您花一秒鐘來閱讀本文......已經在SQL,Python和VBA中嘗試了這一點,但沒有運氣(各種原因)。SQL - 計數第一個字段中有第二個變量的實例

我認爲數據和概念非常簡單 - 但我似乎無法使其工作。

第1欄有股市行情;第2列有公司名稱。但是,許多公司名稱已被截斷,或隨時間而改變。我想查找每個股票的每個實例,該股票的名稱超過1個。

因此,例如,我的文件有以下4線

IBM | Int Bus Mach 
IBM | International Business M 
IBM | Intl Bus Machines 
IBM | Int Bus Mach 

我想看到的3個獨特的公司名稱

IBM | Int Bus Mach 
IBM | International Business M 
IBM | Intl Bus Machines 

任何想法肯定讚賞!

謝謝!

回答

1

根據您的數據的例子,你應該做這樣的事情:

SELECT 
    market_ticker, 
    company_name, 
    count(*) 
FROM yourTable 
GROUP BY 
    market_ticker, 
    company_name 

額外列會給多少次市場股票和公司名稱重複。

+0

謝謝!我想也許我沒有提供關鍵的細節。每個股票代碼每天都會有一個條目,表明它有足夠的運動被添加到數據庫中。所以我可能有50個條目用於IBM |國際總線機器 然後另一個爲 IBM |國際商業機器 我只是想獲得一個名單,將有兩個,不同名稱的IBM。 我很抱歉讓我失望 - 我今天在Python中花了3個小時,這讓我的大腦短路! –

+0

添加不同的子句。我認爲它會完成這項工作:select distinct_ticker,company_name,count(*) –

+0

@JP_Romano這就是這個查詢返回的內容。如果您只想要一個市場股票的公司名稱,您可以在'WHERE'語句中過濾它,並刪除market_ticker列。你能否澄清爲什麼這不是你想要的? – danielsepulvedab

0

2步Sql解決方案在這裏。 我會做以下

簡單獨特的查詢來獲取所有的股票和公司連擊然後轉動

select *, 
ROW_NUMBER() OVER(PARTITION BY TickerColumn ORDER BY NameColumn) AS NameNum 
into #Temp 
From 
(
Select distinct TickerColumn, NameColumn 
from Table 
)x 

然後轉動COLUMNNAMES

Select TickerColumn, [1],[2],[3],[4] 
From 
(select * from #temp) as Source 
Pivot 
(
Max(NameColumn) 
For NameNum in ([1],[2],[3],[4]) ---You can add or reduce number of columns 
) As PivotTable; 
+0

請不要理會以前。這不會幫你的目標 –

0

可能是嘗試這樣的事情。會帶來不同的名字。

WITH cte 
AS (
    SELECT market_ticker 
     ,Company_name 
    FROM Stocks 
    ) 
SELECT a.market_ticker 
    ,b.Company_name 
FROM cte a 
INNER JOIN stocks b 
    ON a.market_ticker = b.market_ticker 
GROUP BY a.market_ticker 
    ,b.company_name 
HAVING count(a.company_name) >= 2 
ORDER BY 1 
    ,2 
+0

這看起來不錯,謝謝。但是,這包括只有一個唯一名稱的代碼... 不要再經歷任何麻煩 - 您的幫助是值得讚賞的,但我認爲我只需要在VBA中以舊式的方式來完成。 –

相關問題