感谢您花点时间阅读本文...在SQL,Python和VBA中尝试过这个,但没有运气(各种原因(。
我认为数据和概念非常简单 - 但我似乎无法使其工作。
第 1 列有一个股票市场行情;第 2 列包含公司名称。 但是,许多公司名称已被截断,或随着时间的推移而更改。 我想找到每个股票代码的每个实例,其中该股票代码具有多个名称。
例如,我的文件有这 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
任何想法当然不胜感激!
谢谢!
根据您的数据示例,您应该执行以下操作:
SELECT
market_ticker,
company_name,
count(*)
FROM yourTable
GROUP BY
market_ticker,
company_name
额外的列将给出市场行情和公司名称重复的次数。
这里的 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;
可以尝试这样的事情。会带来不同的名字。
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