Получить данные из 3 таблиц в SQL Server - PullRequest
0 голосов
/ 26 января 2012

Запрос

SELECT     
    dbo.SI_Customer.cst_Name, dbo.SI_InvoiceMaster.invcm_DocNo,    
    dbo.SI_InvoiceMaster.invcm_Date, dbo.SI_InvoiceMaster.invcm_TotalAmount, 
    dbo.SI_ReceiptMaster.recm_DocNo, dbo.SI_ReceiptMaster.recm_Date,    
    dbo.SI_ReceiptMaster.recm_TotalAmount
FROM         
    dbo.SI_Customer 
FULL OUTER JOIN
    dbo.SI_ReceiptMaster ON dbo.SI_Customer.cst_Code = dbo.SI_ReceiptMaster.cst_Code 
FULL OUTER JOIN
    dbo.SI_InvoiceMaster ON dbo.SI_Customer.cst_Code = dbo.SI_InvoiceMaster.cst_Code
WHERE     
    (dbo.SI_Customer.cst_Code = '001813')

Ниже приведен результат этого запроса - я не хочу повторять эти значения

enter image description here

Ответы [ 2 ]

0 голосов
/ 26 января 2012

"Дураки врываются" - попробуйте:

SELECT     
    c.cst_Name, 
    m.invcm_DocNo,    
    m.invcm_Date, 
    m.invcm_TotalAmount, 
    m.recm_DocNo, 
    m.recm_Date,    
    m.recm_TotalAmount
FROM dbo.SI_Customer c
LEFT JOIN (SELECT cst_Code,
                  invcm_DocNo,
                  invcm_Date, 
                  invcm_TotalAmount, 
                  CONVERT(varchar(10), null) recm_DocNo, 
                  CONVERT(datetime, null) recm_Date,    
                  CONVERT(decimal(25,8), null) recm_TotalAmount
           from dbo.SI_InvoiceMaster
           where cst_Code = '001813'
           union all
           SELECT cst_Code,
                  CONVERT(varchar(10), null) invcm_DocNo,
                  CONVERT(datetime, null) invcm_Date, 
                  CONVERT(decimal(25,8), null) invcm_TotalAmount, 
                  recm_DocNo, 
                  recm_Date,    
                  recm_TotalAmount
           from dbo.SI_ReceiptMaster
           where cst_Code = '001813') m
       ON c.cst_Code = m.cst_Code
WHERE c.cst_Code = '001813'
0 голосов
/ 26 января 2012

Поскольку эти строки содержат разные данные, то есть дату и числа по обе стороны от даты, каждая строка уникальна и поэтому покажет все выбранные столбцы.

Вы можете удалить некоторые столбцы и выполнить группировку по SUM или, если это не удастся, вы можете создать отчет в BIDS и Group by Date и получить другие данные, которые вы не хотите повторять как группы CHILD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...