2017-06-13 32 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中以旧式的方式来完成。 –

相关问题