2017-05-22 11 views
-1

2つのselectステートメントの結果を分割し、合計を含めることは可能ですか?連合結果の除算

望ましい結果 Required Results

各カウントから1つの結果だけでは私の現在のコード

select sum(U.Orders) as sumtotal 
from 
(
    select distinct count(p.PACKSLIP) as Orders 
    from PICKHEAD as p 
    where DATE_REQD = '2017-04-19' 

    union 

    select distinct count(s.PACKSLIP) as Orders 
    from SHIPHIST as s 
    where DATE_REQD = '2017-04-19' 
) AS U 
+0

を使用すると、完了のパーセンテージを計算するにはどうすればよいですか? –

+0

これらのサブクエリは1行しか返さないので、 'select distinct'を実行する必要はありません。 SELECTの結果が同じであれば、UNION ALLを代わりに実行してください。 – jarlh

+0

@TimBiegeleisen ship/sumtotalからの結果に基づく除算* 100 –

答えて

0

私が正しくあなたを理解している場合、あなたはそれ

select sum(U.OrderList) + sum(U.Shiplist) as totalSalesOrder,sum(U.OrderList)/ (sum(U.Shiplist)+sum(U.OrderList)) * 100 as TotalComlpetionPercentage 
from 
(
    select distinct count(p.PACKSLIP) as OrderList, 0 as ShipList 
    from PICKHEAD as p 
    where DATE_REQD = '2017-04-19' 

    union 

    select distinct 0 as OrderList, count(s.PACKSLIP) as Shiplist 
    from SHIPHIST as s 
    where DATE_REQD = '2017-04-19' 
) AS U 
0

たい、それが行うことができますクロス参加:

select P.Orders + S.Orders as [Total Sales], S.Orders * 100.0/(P.Orders + S.Orders) as [Total Completion Percentage] 
from (
     select count(p.PACKSLIP) as Orders 
     from PICKHEAD as p 
     where DATE_REQD = '2017-04-19' 
    ) as P 
cross join (
     select count(s.PACKSLIP) as Orders 
     from SHIPHIST as s 
     where DATE_REQD = '2017-04-19' 
    ) as S 
+0

SQL ServerはON句なしのINNER JOINを受け入れますか? – jarlh

+0

はい。それは同じことです。例: SELECT * FROM(sysobjectsにから上位1名を選択)内 1 = 1 に (sysobjectsにから上位1名を選択)Bに参加 クロスジョイン(sysobjectsにから上位1名を選択) SELECT * FROM (sysobjectsからトップ1の名前を選択)b – cloudsafe

+1

ありがとうございます。 (ANSI SQLにはON句またはUSING句が必要です。) – jarlh

2

代わりCROSS JOINを使用する:

select pOrders + sOrders as sumtotal, 
     (pOrders * 100)/(pOrders + sOrders) 
from 
(
    select count(p.PACKSLIP) as pOrders 
    from PICKHEAD 
    where DATE_REQD = '2017-04-19' 
) as p 
cross join 
(
    select count(s.PACKSLIP) as sOrders 
    from SHIPHIST 
    where DATE_REQD = '2017-04-19' 
) as s 
+0

これは非常に似ていますが、それは私に今問題を引き起こしている割合の計算です。理想的には(sOrders/sumtotal)* 100となりますが、明らかに機能しません –

+0

このクエリを派生テーブルにラップすると、実行できます。 – jarlh

+0

キャスト(キャスト(AS小数点(10,5))/(インプロセス+シップード))* 100 AS小数点(10,2)) –