SQL - 在 1 个字段中计算实例,并在第二个字段中计算变体



感谢您花点时间阅读本文...在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

最新更新