有函数 GetLastPrice(料号,单位) 返回该料号最后一次的价格和币别
我执行 select * from dbo.GetLastPrice('aaaaa','PCS') 能正常运行现在我想将t1表中所有单位为PCS的料号的最后一次价格显示出来
select dbo.GetLastPrice(t1.料号,t1.单位) from t1 where t1.单位='PCS'
报错误,说dbo.GetLastPrice无效应该怎么解决啊,我现在想将单位为PCS,或者KG或者指定料号清单的最后一次价格显示出来,应该怎么办啊,要求不用游标
我执行 select * from dbo.GetLastPrice('aaaaa','PCS') 能正常运行现在我想将t1表中所有单位为PCS的料号的最后一次价格显示出来
select dbo.GetLastPrice(t1.料号,t1.单位) from t1 where t1.单位='PCS'
报错误,说dbo.GetLastPrice无效应该怎么解决啊,我现在想将单位为PCS,或者KG或者指定料号清单的最后一次价格显示出来,应该怎么办啊,要求不用游标
2000改用常量函数
2005改用apply运算
union all
select * from dbo.GetLastPrice('aaaaa','KG')
.....................
--或者改改这个函数
IF OBJECT_ID('T2') IS NOT NULL DROP TABLE T2
IF OBJECT_ID('FUN_T2') IS NOT NULL DROP FUNCTION FUN_T2
GO
CREATE TABLE T1(
ID INT
,ID2 INT
)
INSERT INTO T1
SELECT 1,1 UNION ALL
SELECT 2,3
CREATE TABLE T2(
ID INT
,COL1 VARCHAR(10)
,COL2 VARCHAR(10)
)
INSERT INTO T2
SELECT 1,'A','B' UNION ALL
SELECT 2,'C','D' UNION ALL
SELECT 3,'E','F'
GO
CREATE FUNCTION FUN_T2(@ID INT)
RETURNS @T TABLE(COL1 VARCHAR(10),COL2 VARCHAR(10))
AS
BEGIN
INSERT INTO @T
SELECT COL1,COL2 FROM T2 WHERE ID=@ID
RETURN
END
GO
SELECT T1.*
,T12.*
FROM T1
CROSS APPLY DBO.FUN_T2(T1.ID2) T12
/*
1 1 A B
2 3 E F
*/