Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用变量筛选视图中的日期?_Sql_Views - Fatal编程技术网

Sql 如何使用变量筛选视图中的日期?

Sql 如何使用变量筛选视图中的日期?,sql,views,Sql,Views,这个问题很好 SELECT M.id, M.accnt, amount = M.amount + Isnull(s.supply, 0), issued = Isnull(I.issued, 0) FROM maintbl M LEFT OUTER JOIN (SELECT id, Sum(supply) AS supply

这个问题很好

 SELECT M.id, 
       M.accnt, 
       amount = M.amount + Isnull(s.supply, 0), 
       issued = Isnull(I.issued, 0) 
FROM   maintbl M 
       LEFT OUTER JOIN (SELECT id, 
                               Sum(supply) AS supply 
                        FROM   supplytbl 
                        WHERE  Month(dates) = 1  -- Month filter for Jan - feb Month(dates) in (1,2)
                        GROUP  BY id) S 
                    ON s.id = M.id 
       LEFT OUTER JOIN (SELECT id, 
                               Sum(issued) AS issued 
                        FROM   issuedtbl 
                        WHERE  Month(dateissue) = 1 -- Month filter
                        GROUP  BY id) I 
                    ON I.id = M.id 
但是如何在视图中执行此操作?…使用变量筛选日期?像

WHERE  Month(dateissue) = textbox1.text

或者在视图中有没有任何方法可以这样查询?很高兴能帮上忙……)

如果您使用的是SQL Server,则无法将参数传递给视图

所以,您需要像这样创建存储过程

CREATE PROCEDURE testSP
(
    @issue_month INT
) 
AS 
BEGIN
   ...
END

如果您使用的是SQL Server,则无法将参数传递给视图

所以,您需要像这样创建存储过程

CREATE PROCEDURE testSP
(
    @issue_month INT
) 
AS 
BEGIN
   ...
END

存储过程是回答问题的最佳方式

这是密码

CREATE PROCEDURE usp_sample @Month_date_issue int
AS
SELECT M.id, 
       M.accnt, 
       amount = M.amount + Isnull(s.supply, 0), 
       issued = Isnull(I.issued, 0) 
FROM   maintbl M 
       LEFT OUTER JOIN (SELECT id, 
                               Sum(supply) AS supply 
                        FROM   supplytbl 
                        WHERE  Month(dates) = 1  -- Month filter for Jan - feb Month(dates) in (1,2)
                        GROUP  BY id) S 
                    ON s.id = M.id 
       LEFT OUTER JOIN (SELECT id, 
                               Sum(issued) AS issued 
                        FROM   issuedtbl 
                        WHERE  Month(dateissue) = @Month_date_issue -- Month filter
                        GROUP  BY id) I 
                    ON I.id = M.id 
GO
下面是调用存储过程的步骤

using (SqlCommand cmd = new SqlCommand("usp_sample", con)) {
      cmd.CommandType = CommandType.StoredProcedure;

      cmd.Parameters.Add("@Month_date_issue ", SqlDbType.Int32).Value = Int32.Parse(textbox1.text);

      con.Open();
      cmd.ExecuteNonQuery();
    }

存储过程是回答问题的最佳方式

这是密码

CREATE PROCEDURE usp_sample @Month_date_issue int
AS
SELECT M.id, 
       M.accnt, 
       amount = M.amount + Isnull(s.supply, 0), 
       issued = Isnull(I.issued, 0) 
FROM   maintbl M 
       LEFT OUTER JOIN (SELECT id, 
                               Sum(supply) AS supply 
                        FROM   supplytbl 
                        WHERE  Month(dates) = 1  -- Month filter for Jan - feb Month(dates) in (1,2)
                        GROUP  BY id) S 
                    ON s.id = M.id 
       LEFT OUTER JOIN (SELECT id, 
                               Sum(issued) AS issued 
                        FROM   issuedtbl 
                        WHERE  Month(dateissue) = @Month_date_issue -- Month filter
                        GROUP  BY id) I 
                    ON I.id = M.id 
GO
下面是调用存储过程的步骤

using (SqlCommand cmd = new SqlCommand("usp_sample", con)) {
      cmd.CommandType = CommandType.StoredProcedure;

      cmd.Parameters.Add("@Month_date_issue ", SqlDbType.Int32).Value = Int32.Parse(textbox1.text);

      con.Open();
      cmd.ExecuteNonQuery();
    }
CREATE PROCEDURE monthsearch
@日期时间2
作为
开始
选择*FROM WHERE=@date
结束;
称之为: EXEC monthsearch datetime

创建过程monthsearch
@日期时间2
作为
开始
选择*FROM WHERE=@date
结束;
称之为:
EXEC monthsearch datetime

aah..所以我必须在一夜之间学习这个存储过程..aah..嗯..顺便说一下..tnx mate:)我相信你会在眨眼的时间内习惯存储过程的。不客气:)。有关如何使用参数调用存储过程的信息,请参阅我编辑的帖子。我将尝试一下,伙计..tnx:)新年快乐!:)嗯..我们可以用存储过程来制作水晶报告吗?啊..所以我只需要通宵学习这个存储过程..啊..嗯..顺便说一句..tnx mate:)我相信你会很快习惯存储过程的。不客气:)。有关如何使用参数调用存储过程的信息,请参阅我编辑的帖子。我将尝试一下,伙计..tnx:)新年快乐!:)嗯……我们可以使用存储过程来生成crystal report吗?