如何从SQL中获取记录
我必须对SQL server 2008表进行如下操作 表A如何从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
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中过滤,而不是在何处过滤。谢谢。。。我的问题错了,所以我纠正了问题和答案