2016-07-29 23 views
1

を作成しようとしていますが、今は複数の結果(2つの異なる結果)としてしか作成できません。2つのクエリの結果を1つの結果に結合するSQL

enter image description here

上記結果の両方が2つのクエリからのものです。

私の最初の結果クエリ

SELECT 
    customercode, 
    CONVERT(DATE, TransDate) transdate, 
    SUM(TotalReceivable) AS total 
FROM 
    SalesOrderHeader 
WHERE 
    CustomerCode = 'K-MDMM4' 
    AND TransDate BETWEEN '2016-07-25' AND '2016-07-30' 
GROUP BY 
    CONVERT(DATE, TransDate), customercode 

と私の2番目のクエリ

SELECT 
    b.OutletCode AS outlet, 
    tanggal, 
    (cash + cc + dc + flash + piutang + reject + disc50 + 
    isnull(spesial_item,0)) total 
FROM 
    transaksi a 
LEFT JOIN 
    Outlet b ON a.Outlet = b.OutletCode 
LEFT JOIN 
    area c ON b.areacode = c.areacode 
WHERE 
    b.active = 1 
    AND b.OutletCode LIKE 'K-MDMM4' 
    AND flag = 1 
    AND tanggal BETWEEN '2016-07-25' AND '2016-07-30' 
GROUP BY 
    b.OutletCode, tanggal, cash, cc, dc, flash, 
    piutang, reject, disc50, spesial_item, ba, mpm, tf, 
    ul,remarks 
ORDER BY 
    tanggal DESC 

私はこの結果をしたいです。

customercode | transdate | total_tbl1 | total_tbl2 
     K-MDMM4  2016-07-25 6004050  6004050 
     K-MDMM4  2016-07-26 6880340  6880340 
     K-MDMM4  2016-07-27 5745040  5745040 
     K-MDMM4  2016-07-28 7424820  7424820 

私は。私はこのクエリを持って、なぜ。私は、クエリを経由してテーブルを作成することはできません。

をこれから知りません:(jsfiddle使用することはできません

SELECT 
    b.OutletCode AS outlet, 
    tanggal, 
    (cash + cc + dc + flash + piutang + reject + disc50 + 
    isnull(spesial_item, 0)) total, 
    SUM(d.TotalReceivable) AS total 
FROM 
    transaksi a 
LEFT JOIN 
    Outlet b ON a.Outlet = b.OutletCode 
LEFT JOIN 
    area c ON b.areacode = c.areacode 
LEFT JOIN 
    salesorderheader d ON CONVERT(DATE, a.tanggal) = CONVERT(DATE, d.transdate) 
WHERE 
    b.active = 1 
    AND b.BrandCode LIKE '%%' 
    AND b.OutletCode LIKE '%%' 
    AND flag = 1 
    AND YEAR(tanggal) = '2016' 
    AND MONTH(tanggal) = '7' 
    AND outlet = 'K-MDMM4' 
GROUP BY 
    OutletCode, tanggal, cash, cc, dc, flash, 
    piutang, reject, disc50, spesial_item, transdate, totalreceivable 
ORDER BY 
    tanggal DESC 

私の望む結果からこれまでの結果は....

答えて

3

この投稿最初のソリューションだったとさえ、それは私の意見でコピー/ペーストのソリューションではありません、それは必要なすべての情報が含まれてdownvotes-参加し、

SELECT tbl1.customercode, 
     CAST(tbl1.transdate AS DATE) AS transdate, 
     tbl1.total AS total_tbl1, 
     tbl2.total AS total_tbl2 
FROM 
(
-- Query 1 
SELECT customercode,convert(date,TransDate) transdate,SUM(TotalReceivable) as total 
       FROM SalesOrderHeader 
       where CustomerCode = 'K-MDMM4' 
       and TransDate between '2016-07-25' and '2016-07-30' 
       group by convert(date,TransDate),customercode 
) AS tbl1 
INNER JOIN (
-- Query 2 
select b.OutletCode as outlet,tanggal, (cash + cc + dc + flash + piutang + reject + disc50 + 
    isnull(spesial_item,0)) total From transaksi a 
     left join Outlet b on a.Outlet = b.OutletCode 
     left join area c on b.areacode = c.areacode 
     where b.active = 1 and b.OutletCode like 'K-MDMM4' and flag = 1 and tanggal 
     between '2016-07-25' and '2016-07-30' 
     group by b.OutletCode,tanggal,cash,cc,dc,flash,piutang,reject,disc50,spesial_item,ba,mpm,tf,ul,remarks 
) AS tbl2 ON tbl2.outlet = tbl1.customercode AND CAST(tbl2.trnggal AS DATE) = CAST(tbl1.transdate AS DATE) 
order by CAST(tbl1.transdate AS DATE) DESC; 
+0

ありがとう、それは仕事です。 'order by'部分は私にエラーを与えます。私はクエリの最後にそれを入れて、エラーがなくなった – YVS1102

+0

良い点、私は答えを更新しました。 –

-1

私はこのPCにデータベースをインストールしていませんが、探しているのは:

です10
SELECT val1, val2 FROM 
(SELECT1_of_your_code AS table1) INNER JOIN 
(SELECT2_of_your_code AS table2) ON 
table1.x == table2.y 
+0

を選択する上でコメントしてくださいシングルに両方のクエリを組み合わせます記載されている問題を解決するには – Wolfgang

関連する問題