我创建了一个存储过程,它在tbluser表中有5000个用户在数据库中有一些过滤条件运行。有4个过滤条件(FC1,FC2,FC3,FC4)。过滤条件有部门的一些列表框和下拉列表和countries.I希望输出,如下所示:在Sql Server 2005中需要T-Sql帮助
ID Name StaffNo department Points
1 KK 111 dep1 2
2 NN 222 dep2 1
3 DD 333 dep3 4
我ID,姓名,StaffNo,部门的ResultSet而不是点。
点计算将基于像
过滤条件,如果与之匹配FC1用户获得点1,如果FC1和FC2二者匹配用户获得了2点,如果两个FC1,FC2和FC3匹配用户获得了3点等。
--in stored procedure i m using dynamic query
DECLARE @SQL VARCHAR(2000)
SET @SQL = 'SELECT U.UserID, U.StaffNo,U.FirstName+'' ''+ U.LastName AS EmployeeName,''?'' AS Points FROM tblUser U '
SET @SQL = @SQL+' WHERE U.Department in (' + @SqlDepartment + ') '
---------------------Update---------------------------------------
IF @SqlLanguage <> ''
SET @SQL = @SQL+' OR U.UserID IN (SELECT UserID FROM Country WHERE LCValues IN ('+ @SqlLanguage +'))'
IF @SqlAreas <> ''
SET @SQL = @SQL+' OR U.UserID IN (SELECT UserID FROM tblAreas WHERE '[email protected]+')'
---------------------Update---------------------------------------
...other filtering condition
EXEC (@SQL)
所有的过滤条件都是用OR逻辑来实现的。
感谢您提供解决方案。但在我的情况下,FC1,2,3,4与4个不同的表无关tbluser表 – Sukhjeevan 2011-03-07 12:20:14
您是否可以根据外键,也许[UserID]加入表?你可能会发表一个表格的例子,这样我可以给你一个更好的解决方案吗? – FarligOpptreden 2011-03-07 12:22:08
plz查看更新后的问题。 – Sukhjeevan 2011-03-07 12:48:06