我創建了一個存儲過程,它在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