2017-03-17 6 views
0

私は3つの異なるテーブルから各会社の数、特定の月の行数、およびqty、month、company_nameの3つのクエリを返します。グループ化された3つの値を結合する

代わりに、同じ3列の1つのテーブルを返す必要がありますが、qtyは3つの分離されたすべてのクエリの値を合計する必要があります。

実行速度を落とさない最適な方法で結合または実行することをお勧めしますか。ここで

は、クエリのいずれか、他の2つのクエリの例であるT_CUSTSKだけではなく、まったく同じ構文を持って、彼らはT_CUSTSK2T_CUSTSK3を使用します。

SELECT 
    COUNT(*) as qty, 
    DATEPART (MONTH, [start_date]) AS [month], 
    T_SYSCOM.company_name 
FROM 
    T_CUSTSK 
INNER JOIN 
    T_SYSCOM ON T_CUSTSK.company_id = T_SYSCOM.company_id 
WHERE 
    DATEPART (MONTH, [start_date]) = 12 
GROUP BY 
    DATEPART (MONTH, [start_date]), T_SYSCOM.company_name 
ORDER BY 
    month, qty DESC 
+0

uはいくつかのサンプルの入力と出力を投稿することができます動作するかどうか私に教えて? – Teja

+0

T_CUSTSKテーブルとT_SYSCOMテーブルのテーブルスキーマを投稿できますか? – BipinR

+0

企業名はvarchar(100)、qty int –

答えて

0

連合のすべてはあなたのクエリを結合します。あなたはその後、合計別のクエリを使用してステートメントをラップすることができます

select sum(qty), month, company_name from (
Select count(*) as qty, datepart(month, [start_date]) as [month], T_SYSCOM.company_name 
from T_CUSTSK 
INNER JOIN T_SYSCOM 
ON T_CUSTSK.company_id=T_SYSCOM.company_id 
where datepart(month, [start_date])=12 
group by datepart(month, [start_date]), T_SYSCOM.company_name 
order by month, qty DESC 

union all 

<second query> 

union all 

<third query>) 

group by month, company_name 
+0

キーワード 'group'の近くの構文が正しくありません –

0

あなたはサブクエリでUNIONにすべてT_CUSTSKxテーブルのすべてを行うとT_SYSCOMテーブルで一度その結果を結合することができ、これを試してみてください。 私はSTART_DATEはT_CUSTSK表にされてと仮定してい

Select count(*) as qty, datepart(month, [start_date]) as [month], T2.company_name 
from (
SELECT company_id,start_date FROM T_CUSTSK 
UNION ALL 
SELECT company_id,start_date FROM T_CUSTSK2 
UNION ALL 
SELECT company_id,start_date FROM T_CUSTSK3 
) T1 
INNER JOIN @T_SYSCOM T2 
    ON T1.company_id=T2.company_id 
where datepart(month, [start_date])=12 
group by datepart(month, [start_date]), T2.company_name 
order by month, qty DESC 

は親切に、これは

+0

2つのクエリでそれぞれの日付フィールドの名前が異なることを言及する必要があります。 start_date1、start_date2、start_date3 –

+0

フィールドの名前が異なる場合は、内部サブクエリの列名をstart_dateに設定します。 "" "T_CUSTSK2 FROM start_dateのAS start_date3をALL SELECTのcompany_idを、T_CUSTSK UNION FROM start_dateのように、すべての のSELECTのcompany_idをのcompany_id、start_date1を選択T_CUSTSK1 UNION FROM start_dateのAS start_date2" – BipinR

関連する問題