我有两个函数我正在调用SSRS数据集查询:
fRndNumber()
返回随机值fCheckSum()
返回基于fRndNumber
返回的值的计算值。以下语句不起作用,因为fRndNumber()
的第二次调用生成的值与第一次调用不同。我要求fCheckSum
函数使用fRndNumber()
Select
fRndNumber() as SerialNumber,
fCheckSum(fRndNumber) as CheckSum
理想情况下,我希望声明如下,但我当然不能以这种方式引用'SerialNumber'。
Select
fRndNumber() as SerialNumber,
fCheckSum(SerialNumber) as CheckSum
有什么建议吗?
Doug P
答案 0 :(得分:0)
根据您的SQL版本,您可以使用CTE ...
;WITH RandomCte AS
(
SELECT fRndNumber() AS SerialNumber,
* -- add your other columns here...
FROM someTableName -- replace with your table name
)
SELECT fCheckSum(SerialNumber) AS [CheckSum],
*
FROM RandomCte;
有关CTE的更多信息,请参阅here
答案 1 :(得分:0)
如今,使用CTE被认为是最佳做法。但是,如果您的服务器不支持它们,您也可以使用内联视图:
SELECT
A.SerialNumber,
fCheckSum(A.SerialNumber) AS CheckSum
FROM (
SELECT fRndNumber() as SerialNumber
) as A;