2016-12-14 194 views
0

我不知道它是否可行。如果可能的話,請幫我解決這個問題。從兩個表中選擇一個表

我有兩個表,表1 表2

Table1          Table2 

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

有Table 1和Table之間沒有關係。我想執行一個查詢,使我看起來就像這樣:

輸出表

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

我想用它的日常現金reprt

+0

爲什麼?你想用這個做什麼? – Igor

+0

只需要在UI上進行格式化,爲什麼你需要有'x'行與不相關的'y'行和你的數據庫中的大量空數據? – Kritner

+0

我有一種情況,我想顯示每日現金流量。 **收到的現金**和**支付的現金**我有這兩張桌子第一張桌子我存入現金收入和第二張桌子現金支付。所以我想執行一個查詢,以便我的輸出看起來像這樣: –

回答

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很多。 :) –

+0

在我的解決方案中,我按ID排序。我建議您在解決方案中將其替換爲聚簇索引中的關鍵字段。它會提高性能。 – pacreely

+0

再次感謝我將一直銘記在心! –

0

試試下面的語句。我不知道你爲什麼需要空數據。但下面的代碼可能會幫助你。

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