1

我正在处理一个查询以从两个表中获取结果。而是每个条目有 5 条记录 # 或 (DOC#) 我在同一个表上有多个内部连接,以便在每个条目的一条记录上获得多个结果。

基本查询结果

Date    GL# AccountName AccountDesc Amount          Doc#    FieldG
00:00.0 51010   Account1    Description1    -3230.77    494634  TECH
00:00.0 51010   Account1    Description1    -3230.77    494634  220
00:00.0 51010   Account1    Description1    -3230.77    494634  SGA
00:00.0 51010   Account1    Description1    -3230.77    494634  TX
00:00.0 51010   Account1    Description1    -3230.77    494634  

在同一张表上有多个内部连接

Date    GL# AccountName AccountDesc Amount   Doc#    
00:00.0 51010   Account1    Description1    -3230.77 494634 TECH 220 SGA TX

我正在使用的查询

SELECT 
GLE.Date
,GLE.GL# 
,GLE.AccountName
,GLE.AccountDesc
,GLE.Amount
,GLE.Doc#
,LED.FieldG
,LED2.FieldH
,LED3.FieldI
,LED4.FieldJ
,LED5.Unit 

FROM [Company, Inc$G_L Entry]  GLE
INNER JOIN [Company, Inc$Ledger Entry Dimension] LED
    ON GLE.[Doc#]=LED.[Doc#]
INNER JOIN [Company, Inc$Ledger Entry Dimension] LED2
    ON GLE.[Doc#]=LED2.[Doc#]
INNER JOIN [Company, Inc$Ledger Entry Dimension] LED3
    ON GLE.[Doc#]=LED3.[Doc#]
INNER JOIN [Company, Inc$Ledger Entry Dimension] LED4
    ON GLE.[Doc#]=LED4.[Doc#]
 JOIN [Company, Inc$Ledger Entry Dimension] LED5
    ON GLE.[Doc#]=LED5.[Doc#]



WHERE LED.Date Between '20120101' and '20130101'
AND GLE.[G_L Account No_]between '50000' and '59999'
AND GLE.GD1C between '0000' and '0999'
AND GLE.[Doc#]='494634' 
AND LED.[DC_1]='FieldG'
AND LED2.[DC_1]='FieldH'
AND LED3.[DC_1]='FieldI' 
AND LED4.[DC_1]='FieldJ'
AND LED5.[DC_1]='UNIT'
ORDER BY GLE.Date

我专门为 DOC# 使用硬值,以便我可以测试以限制我的结果。我知道我有这个记录的单位字段,它是空白的。当我运行查询时,它不会返回任何结果。我知道它失败了,因为我对 LED5 表使用了 INNER JOIN,因为它没有匹配的记录。所有其他字段都有数据,因为它是强制性的,因此不会失败。作为一个新手,我可以在这个查询中改变什么来获取包含数据并且也是空白的记录?谢谢。

4

1 回答 1

1

首先将 INNER JOIN 更改为 LEFT JOIN 并将 WHERE 子句更改为 AND ISNULL(LED5.[DC_1],'UNIT')='UNIT'

于 2012-12-13T18:18:12.927 回答