2016-12-14 28 views
0

可能かどうかわかりません。可能であれば、これを解決するのを手伝ってください。1つのテーブルとして2つのテーブルから選択

私は2つのテーブルを持って、TABLE1table2の

Table1          Table2 

CashReceivedFrom  Amount    CashPaidOutto  Amount   
x     100     A      300 
Y     200     B      400 
z     250 
xy     300 

TABLE1とtable2の間には関係がありません。

出力テーブル

CashReceivedFrom  Amount    CashPaidOutto  Amount   
    x     100     A    300 
    Y     200     B    400 
    z     250 
    xy     300 

私は以下のステートメントを試してみて、毎日の現金reprt

+0

なぜですか?あなたはこれで何を達成しようとしていますか? – Igor

+0

UIの書式設定を行うだけですが、関係のない 'y'行の' x'行と、データベースのヌルデータがたくさんあるのはなぜですか? – Kritner

+0

私は毎日のキャッシュフローを表示したいという状況があります。 **現金は受け取った**と**現金を支払った**私はこれらの2つのテーブルを持っている最初のテーブル私は現金を受け取ったと2番目のテーブルの現金を支払った。だから私は私の出力がそのように見えるようにクエリを実行したい: –

答えて

0

これはあなたに必要なものを提供します。

CREATE TABLE #TMP1 (ID INT,Amnt INT) 
CREATE TABLE #TMP2 (ID INT,Amnt INT) 

INSERT INTO #TMP1 VALUES 
(1,100) 
,(2,130) 
,(3,10) 
,(4,160) 

INSERT INTO #TMP2 VALUES 
(76,1024) 
,(78,134) 

;WITH cteA 
    AS 
    (
    SELECT * 
     ,ROW_NUMBER() OVER(ORDER BY ID) AS Pos 
    FROM #TMP1 
    ) 
,cteB 
    AS 
    (
    SELECT * 
     ,ROW_NUMBER() OVER(ORDER BY ID) AS Pos 
    FROM #TMP2 
    ) 
SELECT 
    A.ID 
    ,A.Amnt 
    ,B.ID 
    ,B.Amnt 
FROM 
    cteA A 
     LEFT JOIN cteB B 
      ON 
      A.Pos = B.Pos 
+0

thnx alotttt @pacreely私の問題を修正しました.thnx alot。 :) –

+0

私の解決策で私はIDで発注しています。ソリューションでは、クラスタードインデックスのキーフィールドに置き換えることをお勧めします。パフォーマンスが向上します。 – pacreely

+0

もう一度おねがいします。 –

0

のためにそれを使用したい:私は私の出力は次のようになりますようにクエリを実行します。なぜNullでデータが必要なのかわかりません。しかし、スニペットの下にあなたを助けるかもしれません。

SELECT * FROM (
    SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) 
    AS SNO, CASHRECIEVEDFROM, AMOUNT FROM TABLE1 
) AS A 
    FULL OUTER JOIN 
    SELECT * FROM (
    SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) 
    AS SNO, CASHPAIDTO, AMOUNT FROM TABLE2 
) AS B ON A.SNO = B.SNO