2017-06-13 8 views
0

これを読んでいただきありがとうございます... SQL、Python、VBAでこれを試してみました。SQL - 2番目のバリエーションを持つ1つのフィールドのインスタンスをカウントします。

データとコンセプトはかなり単純だと思いますが、私はそれを機能させることができません。

カラム1には株式市場のティッカーがあります。列2には会社名があります。ただし、会社名の多くは切り捨てられているか、または時間の経過とともに変更されています。私は、ティッカーが1つ以上の名前を持っている各ティッカーのすべてのインスタンスを見つけたいと思います。

だから例えば、私のファイルは、これらの4行、私はすべてのアイデアは確かに高く評価されている3人のユニークな会社名

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

を見たい

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

を持っています!

ありがとうございます!

答えて

1

あなたのデータの例によると、あなたはこのような何かを行う必要がありますが:

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

余分な列が何回市場のティッカーと会社名を繰り返し行います。

+0

ありがとうございます!多分私は批判的な詳細を提供しなかったと思う。各ティッカーには、データベースに追加するのに十分な動きがある毎日のエントリがあります。だから私は50のエントリがあるかもしれない IBM | Intlバス・マシン 次に別の10 for IBM | IBMの個別の名前を持つリストを取得しようとしています。 私はそれを忘れてしまいました。今日はPythonで3時間を過ごしました。私の脳は短絡しています! –

+0

distinct句を追加します。私はそれが仕事をすると思います:select distinct market_ticker、company_name、count(*) –

+0

@JP_Romanoそれはこのクエリが返すものです。 1つのマーケットティッカーの会社名のみを希望する場合は、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 

その後ピボットれる列名

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

それは素晴らしい、ありがとう。しかし、これには1つのユニークな名前しかないコードが含まれています... あなたの助けに感謝します。しかし、私はVBAの古風なやり方をしなければならないと思います。 –

関連する問題