Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

如何从SQL中获取记录

如何从SQL中获取记录,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我必须对SQL server 2008表进行如下操作 表A ID int Not Null (primary ID) No int NULL Value int NULL Flag nchar(10) NULL 表B ID int Not Null (primary ID) No int NULL Value

我必须对SQL server 2008表进行如下操作

表A

ID          int         Not Null (primary ID)
No          int         NULL
Value       int         NULL
Flag        nchar(10)   NULL
表B

ID          int         Not Null (primary ID)
No          int         NULL
Value       int         NULL
Flag        nchar(10)   NULL
我在表A中有以下数据

ID     No      Value   Flag
1      1        12      1         
2      1        12      1         
3      1        25      1         
4      2        120     1         
5      3        36      2         
6      2        120     2         
7      6        1       1         
8      2        10      1         
9      6        10      2         
10     1        25      2         
11     2        120     1        
表B中没有记录 当我写下下面的陈述

SELECT     dbo.A.No, SUM(dbo.A.Value) AS [IN], SUM(ISNULL(dbo.B.Value, 0)) AS OUT
FROM         dbo.A LEFT OUTER JOIN
                      dbo.B ON dbo.A.NO = dbo.B.NO
WHERE     (dbo.A.Flag = N'1')
GROUP BY dbo.A.No
我的成绩越来越差

No      IN      OUT
1       49       0
2       250      0
6       1        0
当我添加
WHERE(dbo.A.Flag=N'1')和(dbo.B.Flag=N'1')

什么也不会来

我的问题是,当B不包含记录或找不到B.Id时,如何将表B中的记录作为0获取

更新:
当表B中有数据时,记录就会出现。

尝试使用以下条件:-

WHERE (dbo.A.Flag = N'1') AND (dbo.B.Flag = ISNULL(N'1',0));
这可能会对您有所帮助。

Imran,
我认为下面的
sql
将对您有所帮助

SELECT      A.No, 
            SUM(A.Value) AS [IN], 
            SUM(ISNULL(B.Value, 0)) AS [OUT]
FROM        dbo.A A 
LEFT JOIN   dbo.B B ON A.No = B.No AND B.Flag = N'1'
WHERE       A.Flag = N'1'
GROUP BY    A.No

你期望的结果是什么?还要标记表单B?
outer
表应该在join中过滤,而不是在何处过滤。谢谢。。。我的问题错了,所以我纠正了问题和答案