0

私はこれらのテーブル、ロール、ロールアウトを持っています。結合を実行して、数学を実行したいと思います。

ロールズ

      |size|
      ------
      |3x3| 
      |4x4| 
      |3x3| 
      |3x3| 

ロールアウト

      |type|
      ------
      |3x3| 

減算、結合後の期待される出力==>

      |size|Remaining(table1 - table2)|
      --------------------------------
      |3x3|   2                       |                 
      |4x4|   1                       |               

私のコード:

SELECT tarpaulin.size, COUNT( * ) , tarpaulinout.Ww, tarpaulinout.dc 
FROM tarpaulin LEFT JOIN (SELECT size AS Ww, COUNT( * ) AS dc FROM tarpaulinout 
GROUP BY size) AS tarpaulinout ON tarpaulin.size = tarpaulinout.Ww 
GROUP BY tarpaulin.size

しかし、上記のコードのO/Pは

      |size|count(*)|size |dc    |
      ----------------------------
      |3x3|3        | 3x3 |1     |
      |4x4|1        | NILL| NILL |

私はこれに近づくことができます、親切に私の望ましい出力を達成する方法について私に教えてください。前もって感謝します。

4

4 に答える 4

2

2 つのセットを一緒に UNION してから、両方で SUM を取ることができます。つまり、

select size, sum(counter) remaining
from
(
    select size, 1 counter
    from rolls
    union all
    select type, -1 counter
    from rollsout
) x
group by size;
于 2012-10-30T03:38:47.397 に答える
0

最初のテーブルと 2 番目のテーブルを別々にグループ化してレコードの数を取得し、属性に対してsizeLEFT JOIN を実行してテーブルからすべてのレコードとテーブルから一致するレコードを取得し、次のように減算を行う必要があります。sizetarpaulintarpaulinout

SELECT a.size, a.rcount - ISNULL(b.rcount, 0)
FROM
    (SELECT size, count(*) FROM tarpaulin GROUP BY size) as a
    LEFT JOIN (SELECT size, count(*) FROM tarpaulinout GROUP BY size) as b
    ON a.size = b.size
于 2012-10-30T03:28:00.593 に答える
0
Select x.Size,(x.Cnt1 - Isnull(y.Cnt2, 0)) AS Remaining
From
(Select r.Size,count(r.Size) Cnt1
From rolls r
Group by r.Size)x

Left Outer join
(Select ro.Type,Count(ro.Type) Cnt2
From rollsout ro
Group by ro.Type)y

On x.Size = y.Type
于 2012-10-30T03:31:53.367 に答える
0
SELECT a.size, a.Rcount - b.Acount FROM (SELECT size, COUNT( * ) AS Rcount FROM tarpaulin GROUP BY size ) AS a LEFT JOIN ( SELECT size, COUNT( * ) AS Acount FROM tarpaulinout GROUP BY size ) AS b ON a.size = b.size 

Vikdor コードを少し変更しただけでうまくいきました:)

于 2012-10-30T03:49:26.297 に答える