两组由表stich另一张表

时间:2016-08-29 03:29:41

标签: sql sql-server

我有三张桌子需要放在一起 第一个表是我的主要交易表,我需要获取不同的交易ID号和公司ID。它有所有重要的钥匙。交易ID不是唯一的 第二个表的项目信息链接到不唯一的交易ID号,我需要提取项目 第三个表的公司信息有公司ID。

现在我已经通过id by group by first first卖出了其中的一些。第二个通过子查询创建唯一的ID并连接到第一个。 我遇到的问题是公司的第三个问题。我似乎无法创建一个在上述组合中工作的查询。有什么想法吗?

这里建议的是我的代码。它的工作原理,但这是因为我使用的公司数不能给出正确的数字。我怎么能让公司号码正确出来?

SELECT
    dep.ItemIDAPK,
    dep.TotalOne,
    dep.company,
    company.vendname,
    appd.ItemIDAPK,
    appd.ItemName
FROM (
    SELECT
        csi.ItemIDAPK,
        sum(f.TotalOne) as TotalOne,
        count(f.DimCurrentcompanyID) company
    FROM dbo.ReportOne F with (nolock)
    INNER JOIN dbo.DSaleItem csi with (nolock) 
        on f.DSaleItemID = csi.DSaleItemID 
    INNER JOIN dbo.DimCurrentcompany cv
        ON f.DimCurrentcompanyID = cv.DimCurrentcompanyID
    INNER JOIN dbo.DimDate dat
        on f.DimDateID = dat.DimDateID
    where (
        dat.date >='2013-01-29 00:00:00.000'
        and dat.date <= '2013-01-30 00:00:00.000'
    )
    GROUP BY csi.ItemIDAPK
) as dep
INNER JOIN (
    SELECT
        vend.DimCurrentcompanyID,
        vend.Name vendname
    FROM dbo.DimCurrentcompany vend
) As company
    on dep.company =  company.DimCurrentcompanyID
INNER JOIN (
    SELECT
        c2.ItemIDAPK,
        ItemName
    FROM (
        SELECT DISTINCT ItemIDAPK
        FROM dbo.dimitem AS C
    ) AS c1
    JOIN dbo.dimitem AS c2 ON c1.ItemIDAPK = c2.ItemIDAPK
) as appd
    ON dep.ItemIDAPK = appd.ItemIDAPK

有关详细信息,我的输出是以下示例,我知道代码执行且companyid不正确,因为我只是在其中放入了(count)以使上述代码执行:

Current Results:

Item Number     TLS      CompanyID    Company Name    Item Number   Item Name
111111         300         303         Johnson Corp       29323      Soap


Proposed Results:


Item Number     TLS      CompanyID    Company Name    Item Number   Item Name
111111         300         29         Johnson Corp       29323      Soap

0 个答案:

没有答案