需要有关SQL Server 2008编程的帮助

时间:2013-04-09 11:31:40

标签: sql-server

我是SQL Server 2008编程的新手,并尝试创建一个过程。

嗯,要求是'过程根据输入参数返回数据或者如果没有给出输入数据 - 它应该进行默认选择并返回所有符合条件的数据'

我试着用这样的东西 -

CREATE PROCEDURE [dbo].[Proc_sampletestproc]
   (@testid int)
AS
BEGIN         
   SET NOCOUNT OFF;  ----I worked with Oracle PL/SQL and so do we need for mandatory this declarations

在这里,我需要检查输入testid是否有值。如果它存在,我们有一个选择的情况或我们做默认选择。

另外,我正在放置一个直接SELECT没有连接表。我如何JOIN表格以及OUTER JOINS,因为testid可能有也可能没有保险?我的意思是语法 - SQL Server中的语法完全不同。

SELECT 
    T.TESTID, T.NAME, TI.INSURENAME 
FROM 
    testinsured ti, test t, testinsuredHistory tih
WHERE
    t.testid = ti.testid  -----This entry may be there or not IN THE testinsured TABLE
    AND tih.testinsuredid = ti.testinsuredid --A testid might have 2 Insurers whose history is stored here.
    AND TIH.STARTDATE IS NOT NULL
    AND TIH.ENDDATE IS NOT NULL     --TO CHECK ACTIVE DATES FOR COVERAGE

此外,我想在testid上进行分组,以便名称出现一次,但InsuredPlanname相应地出现一次,是每个Testid的两倍。

1 个答案:

答案 0 :(得分:0)

if (@testid is not null)
begin
    /* ... */
end
else 
begin
    SELECT T.TESTID,T.NAME,TI.INSURENAME 
    FROM test t 
    left outer join testinsured ti on t.testid = ti.testid -----This entry may be there or not IN THE testinsured TABLE
    left outer join testinsuredHistory tih on ti.testinsuredid = tih.testinsuredid --A testid might have 2 Insurers whose history is stored here.
    where TIH.STARTDATE IS NOT null AND TIH.ENDDATE IS NOT NULL
    /* group by ... */
end