[英]Joining two selects into 4 columns
我正在嘗試將兩個select語句連接起來以在一個表中形成4列。 我想要的結果將是這樣的
+--------------+----------------+------------------+--------------+
| ExpectedDate | ExpectedAmount | ActualDate | ActualAmount |
+--------------+----------------+------------------+--------------+
| 01/03/2014 | 65161 | 2014-03-01 00:00 | 57 |
| 02/03/2014 | 64 | 2014-03-02 00:00 | 321651651 |
| 03/03/2014 | 8 | 2014-03-03 00:00 | 233258646 |
| 04/03/2014 | 561 | 2014-03-04 00:00 | 2321 |
| 05/03/2014 | 651651 | 2014-03-05 00:00 | 8494561 |
| 06/03/2014 | 651616131 | NULL | NULL |
| 07/03/2014 | 316548478 | NULL | NULL |
| 08/03/2014 | 646512132 | NULL | NULL |
| 10/03/2014 | 654984984 | NULL | NULL |
| 11/03/2014 | 323213218 | NULL | NULL |
| 12/03/2014 | 6464651 | NULL | NULL |
| 13/03/2014 | 313218 | NULL | NULL |
| 14/03/2014 | 849898 | NULL | NULL |
| 15/03/2014 | 3213218 | NULL | NULL |
| 16/03/2014 | 9898465 | NULL | NULL |
+--------------+----------------+------------------+--------------+
目前,我有以下SQL,它們非常接近,但它們卻不在同一行中,而是像這樣拆分:
+--------------+----------------+------------------+--------------+
| ExpectedDate | ExpectedAmount | ActualDate | ActualAmount |
+--------------+----------------+------------------+--------------+
| 01/03/2014 | 65161 | NULL | NULL |
| 02/03/2014 | 64 | NULL | NULL |
| 03/03/2014 | 8 | NULL | NULL |
| 04/03/2014 | 561 | NULL | NULL |
| 05/03/2014 | 651651 | NULL | NULL |
| 06/03/2014 | 651616131 | NULL | NULL |
| 07/03/2014 | 316548478 | NULL | NULL |
| 08/03/2014 | 646512132 | NULL | NULL |
| 10/03/2014 | 654984984 | NULL | NULL |
| 11/03/2014 | 323213218 | NULL | NULL |
| 12/03/2014 | 6464651 | NULL | NULL |
| 13/03/2014 | 313218 | NULL | NULL |
| 14/03/2014 | 849898 | NULL | NULL |
| 15/03/2014 | 3213218 | NULL | NULL |
| 16/03/2014 | 9898465 | NULL | NULL |
| NULL | NULL | 2014-03-01 00:00 | 57 |
| NULL | NULL | 2014-03-02 00:00 | 321651651 |
| NULL | NULL | 2014-03-03 00:00 | 233258646 |
| NULL | NULL | 2014-03-04 00:00 | 2321 |
| NULL | NULL | 2014-03-05 00:00 | 8494561 |
+--------------+----------------+------------------+--------------+
這是SQL:
--DECLARE PERIOD
DECLARE @NextMonthDate VARCHAR(10)
DECLARE @currentMonthDate VARCHAR(10)
DECLARE @VarientVar VARCHAR(10)
DECLARE @ExpectedDateSample VARCHAR(10)
--SET PERIOD
SET @NextMonthDate = CONVERT(VARCHAR(4), DATEPART(YEAR, DATEADD(MONTH, -1, GETDATE())))+'-'+SUBSTRING(CONVERT(VARCHAR, DATEADD(MONTH, +1, GETDATE()), 112),5,2)
SET @currentMonthDate = CONVERT(VARCHAR(4), DATEPART(YEAR, GETDATE()))+'-'+SUBSTRING(CONVERT(VARCHAR, DATEADD(MONTH, +0, GETDATE()), 112),5,2)
SET @ExpectedDateSample = SUBSTRING(CONVERT(VARCHAR, DATEADD(MONTH, +0, GETDATE()), 112),5,2)+'/'+CONVERT(VARCHAR(4), DATEPART(YEAR, GETDATE()))
SELECT e.ExpectedDate, e.ExpectedAmount, a.ActualDate, a.ActualAmount
FROM (SELECT ExpectedDate, SUM(ExpectedPayment) ExpectedAmount
FROM Simplicity..V_PaymentPlan2
WHERE Period >= @currentMonthDate and Period < @NextMonthDate AND HyphenStatus != 'Unpaid' AND ExpectedDate LIKE '%'+@ExpectedDateSample+'%'
GROUP BY ExpectedDate) e
FULL JOIN
(SELECT CONVERT(VARCHAR, PaymentDate, 20) ActualDate, SUM(ActualPayment) ActualAmount
FROM Simplicity..V_PaymentPlan2
WHERE Period >= @currentMonthDate and Period < @NextMonthDate AND HyphenStatus != 'Unpaid' AND CONVERT(VARCHAR, PaymentDate, 20) LIKE '%'+@currentMonthDate+'%'
GROUP BY PaymentDate) a on a.ActualDate = e.ExpectedDate
ORDER BY e.ExpectedDate, a.ActualDate
任何想法如何使它們在同一行中排成一行,而不是插入NULL並向下推?
我沒有任何主鍵或外鍵。
SELECT ExpectedDate,ExpectedAmount, ActualDate, ActualAmount FROM A a1
INNER JOIN A a2
ON a1.ExpectedDate = a2.ActualDate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.