这是我的第一个表值函数。
我有一个表格tableFunc
我的表包含以下列:
Empid
(23610,23611 ...) - 唯一ChDate
(2015-4-21 22:02:10.807,2015-4-21 22:02:11.050,...)Site
(25) - 所有相同的值userid
(7,7,...) - 所有相同的值initsal
(0,0,...) - 所有相同的值finsal
(0.696176161,0.696166161,...) - 所有相同的值note
(输入文字,输入文字......) - 所有相同的值我想创建一个带有游标的表值函数,该游标将获取行并仅返回唯一记录。我对其他建议持开放态度。
由于
答案 0 :(得分:0)
这将选择不同的值:
SELECT DISTINCT Empid,
[Site],
userID,
initsal,
finsal,
note
FROM tableFunc A
GROUP BY Empid,[Site],userID,initsal,finsal,note
如果您希望不同的EmpID具有chDates列表:
SELECT Empid,
STUFF (
(
SELECT ',' + CAST(chDate AS VARCHAR(30))
FROM tableFunc SubQuery
WHERE SubQuery.Empid = A.Empid
FOR XML PATH('')
),
1,1,'') AS ChDateList,
[Site],
userID,
initsal,
finsal,
note,
MAX(chDate) AS recent_chDate
FROM tableFunc A
GROUP BY Empid,[Site],userID,initsal,finsal,note
答案 1 :(得分:0)
这是一种可以编写表值函数以从tablefunc表中获取唯一记录的方法:
CREATE FUNCTION dbo.GetUniqueRecords()
RETURNS @TableFunc TABLE (
--I am not sure how you have these datatypes defined, but change it to your needs
EmpId INT NOT NULL
,ChDate datetime
,Site INT
,userid INT
,initsal MONEY
,finsal MONEY
,note VARCHAR(200)
)
AS
BEGIN
INSERT into @TableFunc(EmpId,ChDate,Site,userid,initsal,finsal,note)
SELECT Empid
,max(ChDate)
,max([Site])
,max(userID)
,max(initsal)
,max(finsal)
,max(note)
FROM tableFunc
GROUP BY Empid;
RETURN;
END
GO
希望这有帮助!