C# 透视时变量列中的相同列名
由于pivot时的变量列,我无法对tabel的列使用别名。 我想加入这个结果,但因为相同的列名我不能。 有什么方法可以在枢轴之前或之后完成吗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
请帮助我申报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)