两个与PIVOT合作

时间:2018-05-23 12:58:00

标签: sql sql-server

我想从另一个表中添加新列,现在我有查询:

SELECT
Id    
,Symbol
,Nazwa
,isnull([100000],0) AS [Magazyn 1]
,isnull([100005],0) AS [Magazyn 2]
,isnull([100006],0) AS [Magazyn 3]
,isnull([100000],0)+isnull([100005],0)+isnull([100006],0) Razem

FROM (
SELECT

ASO.id
,ASO.Symbol
,ASO.Nazwa
,STANY.IloscDostepna
,STANY.Magazyn_ID

FROM
ModelDanychContainer.Asortymenty ASO

LEFT JOIN ModelDanychContainer.StanyMagazynowe STANY ON STANY.Asortyment_ID 
= ASO.ID) AS sc

PIVOT
(
SUM(IloscDostepna) FOR Magazyn_ID IN ([100000],[100005],[100006])
) AS pv

我想从表中添加列:

JOIN ModelDanychContainer.GrupyAsortymentu GRUPY ON GRUPY.ID = ASO.GRUPA_ID

当我尝试这样做时,我得到错误:

  

4104无法绑定多部分标识符GRUPY.NAZWA

     

8156对于' sc'

,多次指定NAZWA列      

8156为' pv'

多次指定NAZWA栏
SELECT
Id    
,Symbol
,GRUPY.Nazwa
,Nazwa
,isnull([100000],0) AS [Magazyn 1]
,isnull([100005],0) AS [Magazyn 2]
,isnull([100006],0) AS [Magazyn 3]
,isnull([100000],0)+isnull([100005],0)+isnull([100006],0) Razem

 FROM (
 SELECT
ASO.id
,ASO.Symbol
,ASO.Nazwa
,GRUPY.Nazwa
,STANY.IloscDostepna
,STANY.Magazyn_ID

FROM
ModelDanychContainer.Asortymenty ASO

LEFT JOIN ModelDanychContainer.StanyMagazynowe STANY ON STANY.Asortyment_ID 
= ASO.ID

JOIN ModelDanychContainer.GrupyAsortymentu GRUPY ON GRUPY.ID = ASO.GRUPA_ID) 
AS sc

PIVOT
(
SUM(IloscDostepna) FOR Magazyn_ID IN ([100000],[100005],[100006])
) AS pv

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT
    Id    
    ,Symbol
    ,GroupyNazwa
    ,AsoNazwa
    ,isnull([100000],0) AS [Magazyn 1]
    ,isnull([100005],0) AS [Magazyn 2]
    ,isnull([100006],0) AS [Magazyn 3]
    ,isnull([100000],0)+isnull([100005],0)+isnull([100006],0) Razem
FROM (
        SELECT
            ASO.id
            ,ASO.Symbol
            ,ASO.Nazwa AS AsoNazwa
            ,GRUPY.Nazwa AS GroupyNazwa
            ,STANY.IloscDostepna
            ,STANY.Magazyn_ID
        FROM
            ModelDanychContainer.Asortymenty ASO
            LEFT JOIN ModelDanychContainer.StanyMagazynowe STANY ON STANY.Asortyment_ID = ASO.ID
            JOIN ModelDanychContainer.GrupyAsortymentu GRUPY ON GRUPY.ID = ASO.GRUPA_ID
    ) 
        AS sc

    PIVOT
    (
        SUM(IloscDostepna) FOR Magazyn_ID IN ([100000],[100005],[100006])
    ) AS pv

问题是子查询有两列具有相同的别名“Nazwa”ASO.NazwaGRUPY.Nazwa