如何使用过滤器来处理子查询?

时间:2013-10-22 15:52:29

标签: asp.net sql sql-server pivot-table

提供的代码工作正常,输出如下表所示

SELECT * FROM
(
SELECT   setsTbl.s_id, setsTbl.setName, trainingTbl.t_date, userProfilesTbl.No + ' ' + userProfilesTbl.surname AS Name, userProfilesTbl.st_id, userProfilesTbl.wa_id, userAssessmentTbl.o_id, row_number() over
(
partition by setsTbl.s_id

                order by trainingTbl.t_date ASC
            ) r
FROM         userProfilesTbl RIGHT OUTER JOIN
                      userAssessmentTbl ON userProfilesTbl.UserId = userAssessmentTbl.UserId RIGHT OUTER JOIN
                      trainingTbl ON userAssessmentTbl.tt_id = trainingTbl.tt_id RIGHT OUTER JOIN
                      setsTbl ON trainingTbl.s_id = setsTbl.s_id 

                      )x
WHERE x.r =1


s_id   setName  Name       o_id      
-----  -----   -----      ------
1       100     Barnes      2
2       100     Beardsley   3
3       101     Aldridge    1
4       102     Molby       2
5       102     Whelan      3

我在ASP.NET中使用数据表,并使用DropDownlist控制日期和2个字段userProfilestbl.st和userProfilesTbl.wa,它允许我过滤商店并转移人/用户正在工作。

如何将我的过滤器添加到当前子查询中。

这是我正在使用的过滤器/参数

   (userProfilesTbl.st_id=2 AND userProfilesTbl.wa_id=2) AND (DATEPART(yyyy,t_date) = 2013 )

1 个答案:

答案 0 :(得分:0)

您可以在from子句后的子查询中插入此子句。请查看以下查询以获取一些想法:

    SELECT * FROM
(
SELECT   setsTbl.s_id, setsTbl.setName, trainingTbl.t_date, userProfilesTbl.No + ' ' + userProfilesTbl.surname AS Name, userProfilesTbl.st_id, userProfilesTbl.wa_id, userAssessmentTbl.o_id, row_number() over
(
partition by setsTbl.s_id

                order by trainingTbl.t_date ASC
            ) r
FROM         userProfilesTbl RIGHT OUTER JOIN
                      userAssessmentTbl ON userProfilesTbl.UserId = userAssessmentTbl.UserId RIGHT OUTER JOIN
                      trainingTbl ON userAssessmentTbl.tt_id = trainingTbl.tt_id RIGHT OUTER JOIN
                      setsTbl ON trainingTbl.s_id = setsTbl.s_id 

WHERE (userProfilesTbl.st_id=2 AND userProfilesTbl.wa_id=2) AND (DATEPART(yyyy,t_date) = 2013 ))x
WHERE x.r =1
相关问题