在这个存储过程中,我必须使用
def main():
person = people()
person2 = people("joel max")
print(person2.whatname())
gravity(78,98)
def gravity(mass,accel):
force = mass * accel
return force
if __name__ == "__main__": main()
因此,我有两个同名的专栏" QuoteGuid"。
然后,当我尝试在SSRS中添加此查询时,出现错误,因为我有2个具有相同名称的列。
我不是这个存储过程的作者,所以我无法理解是否有机会消除或重命名导致此名称的列名。
SELECT *
FROM @policyData a
LEFT OUTER JOIN ##Temp b ON b.qguid = a.quoteguid
LEFT OUTER JOIN ##Temp c ON c.qguid = a.quoteguid2;
答案 0 :(得分:1)
只需更改您尝试在最后一个进行另一个左连接的位置,并明确提及所有列名称。
SELECT a.* ,b.*,c.qguid as qguid1
FROM
@policyData a
LEFT OUTER JOIN ##Temp b on b.qguid = a.quoteguid
/*Because I am using another LEFT JOIN here, I have two columns namem "qguid"*/
LEFT OUTER JOIN ##Temp c on c.qguid = a.quoteguid2;
Another way,
declare @CurDate datetime=getdate()
Declare @CurDate1 varchar(8)
select @CurDate1= replace(convert(varchar(8), @CurDate, 112), ':','')
select @CurDate1
SET @cols = STUFF((SELECT ',' + QUOTENAME(c.locationCode) +@CurDate1
FROM Catalytic_vw_LocationCodeByLine c WHERE c.linename =@LineName order by c.CompanyName, c.LocationCode
FOR XML PATH('')),1,1,'')
答案 1 :(得分:0)
如果我正确理解您的问题,您需要使用现有存储过程来获取SSRS报告的数据,并且您无法修改该过程。问题是存储过程返回两个具有相同名称的列,SSRS将不接受数据集中的列。
绕过该调用存储过程并将其结果存储在具有不同列名的临时表中。然后输出临时表内容。这使您可以控制列的名称。见下面的例子。
CREATE PROCEDURE dbo.sp_Test
AS
BEGIN
SELECT
1 AS 'Test1',
2 AS 'Test2',
3 AS 'Test3',
3 AS 'Test3'
END
CREATE TABLE #Test
(
Test1 int,
Test2 int,
Test3 int,
Test4 int
)
INSERT INTO #Test
EXEC dbo.sp_Test
SELECT * FROM #Test
DROP TABLE #Test