1

私はこのコードを持っています:

SELECT tenant.scode
,tenant.sunitcode
,rtrim(tenant.sLastName) + ', ' + (tenant.sFirstName)
,charge.total
,tenant.istatus
,tenant.dtmovein

FROM tenant
LEFT OUTER JOIN (
SELECT sum(CASE 
            WHEN trans.itype = 6
                THEN stotalamount * - 1
            ELSE CASE 
                    WHEN trans.itype = 3
                        THEN stotalamount * - 1
                    ELSE stotalamount
                    END
            END) total
    ,hperson
FROM trans
    where trans.itype in (6,7)
GROUP BY hperson
) charge ON tenant.hmyperson = charge.hperson
WHERE charge.total IS NOT NULL
AND charge.total <> 0
AND tenant.istatus IN (
    0
    ,3
    ,4
    )
and hproperty = 2396

UNION ALL

SELECT  tenant.scode
 ,tenant.sunitcode
,rtrim(tenant.sLastName) + ', ' + (tenant.sFirstName)
,charge.total
    ,tenant.istatus
,tenant.dtmovein

FROM tenant
LEFT OUTER JOIN tenant t2 on (tenant.sleasefield36 = t2.scode)
LEFT OUTER JOIN (
SELECT sum(CASE 
            WHEN trans.itype = 6
                THEN stotalamount * - 1
            ELSE CASE 
                    WHEN trans.itype = 3
                        THEN stotalamount * - 1
                    ELSE stotalamount
                    END
            END) total
    ,hperson
FROM trans
    where itype in (6,7)
GROUP BY hperson
) charge ON t2.hmyperson = charge.hperson
WHERE charge.total IS NOT NULL
AND charge.total <> 0
AND tenant.istatus IN (
    0
    ,3
    ,4
    )
and tenant.hproperty = 2396

ORDER BY total

特定の物件から、家賃やその他の支払いを滞納しているすべてのテナントと、借りている金額を取得します。

私の問題は、物件の 1 つが最近売却されたため、以前の物件から古い残高を取得し、それを新しい物件の残高に追加する必要があることです。基本的にこれは正しく機能していますが、2 つの金額 (古いプロパティから 1 つと新しいプロパティから 1 つ) が 2 つの別々の行として結果に表示されます。最初の残高は最初のクエリから取得され、2 番目は UNION ALL の後のクエリから取得されます。

テナントごとにこれらの 2 つの行を作成して、残高の金額を結合し、テナントごとに 1 つの結果行を作成するにはどうすればよいですか?

前もって感謝します!:) 詳細を提供できるかどうか教えてください

4

1 に答える 1

1

素早い脳死の答え(最後と最初の連結に「名前」のような名前を付ける必要があることに注意してください):

SELECT
    scode,
    sunitcode,
    name,
    SUM(total),
    istatus,
    dtmovein
FROM (
 <your first query>
 UNION ALL
 <your second query>
) AS all_data
GROUP BY
    scode,
    sunitcode,
    name,
    istatus,
    dtmovein
于 2013-01-23T18:59:54.030 に答える