C# 透视时变量列中的相同列名

C# 透视时变量列中的相同列名,c#,sql,pivot,C#,Sql,Pivot,由于pivot时的变量列,我无法对tabel的列使用别名。 我想加入这个结果,但因为相同的列名我不能。 有什么方法可以在枢轴之前或之后完成吗 请帮助我申报2@cols怎么样: 一个用于在PIVOT中使用的列名 第二个相同但作为select语句的别名 用这个做支点 price c_melli cost_teacher 150000 5099572650 1 170000 5099572650 1 170000 5099572650 1

由于pivot时的变量列,我无法对tabel的列使用别名。 我想加入这个结果,但因为相同的列名我不能。 有什么方法可以在枢轴之前或之后完成吗


请帮助我

申报2@cols怎么样:

一个用于在PIVOT中使用的列名 第二个相同但作为select语句的别名 用这个做支点

price   c_melli cost_teacher
150000  5099572650  1         
170000  5099572650  1         
170000  5099572650  1         
150000  0015601218  1         
170000  0015601218  1         
200000  0015601218  1         
200000  0015601218  2         
200000  0015601218  2         
200000  0015601218  1 

    declare @cols nvarchar(max)
    declare @q nvarchar(max)
    select @cols = STUFF((SELECT distinct ',' + QUOTENAME(tblcity.cost_teacher)
            FROM tblCity where cost_teacher<>0
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')
    set @q=
    'select teacher_id,' +@cols+' from
    (select city1.teacher_id,cost_teacher,price from
    [dbo].[tblSessionPrice] join
    (select * from tblCity )city1  on
    [dbo].[tblSessionPrice].[id]=city1.    [cost_student])as s 
    PIVOT
    (
    SUM(price)
    FOR [cost_teacher] IN ('+ @cols+')
    )as pivottable'

    execute(@q)
    and same for count aggregate function

result is

    teacher_id  1         2         
    0015601218  720000  400000
    5099572650  490000  NULL

and 

    teacher_id  1       2         
    0015601218  4   2
    5099572650  3   0
选择这个

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(tblcity.cost_teacher)
        FROM tblCity where cost_teacher<>0
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'')
像这样:

select @colsWithAliases = STUFF((SELECT distinct ',' + QUOTENAME(tblcity.cost_teacher + ' as Col' + tblcity.cost_teacher)
        FROM tblCity where cost_teacher<>0
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'')

在这两个pivot查询中,我有相同的专栏。我编辑了我的答案,请看一看
declare @cols nvarchar(max)
declare @colsWithAliases nvarchar(max)
declare @q nvarchar(max)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(tblcity.cost_teacher)
        FROM tblCity where cost_teacher<>0
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'')
select @colsWithAliases = STUFF((SELECT distinct ',' + QUOTENAME(tblcity.cost_teacher + ' as Col' + tblcity.cost_teacher)
        FROM tblCity where cost_teacher<>0
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'')
set @q=
'select teacher_id,' +@colsWithAliases +' from
(select city1.teacher_id,cost_teacher,price from
[dbo].[tblSessionPrice] join
(select * from tblCity )city1  on
[dbo].[tblSessionPrice].[id]=city1.    [cost_student])as s 
PIVOT
(
SUM(price)
FOR [cost_teacher] IN ('+ @cols+')
)as pivottable'

execute(@q)