2010-12-14 10 views
2

2つのSQLクエリを1つに結合してより大きなアイデアを表現する方法を見つけるのに苦労しています。複数のSQLクエリを結合するにはどうすればよいですか?

たとえば、クエリAとクエリBがあるとします。クエリAは、処理された合計時間を返します。クエリBは、作業者が作業できる総時間数を返します。これらのクエリのそれぞれは、単一の行を持つ単一の列を返します。私が本当に欲しい

は、しかし、私が働いていた容量の割合を知りたい超えるクエリBを照会し、本質的です。

私は独立して、クエリAとBの書き方を知っているが、私はそれらを一緒に使用する新しいSQLクエリを思い付くものを事前に作成クエリを使用する方法を理解しようとすると、私の問題が来ます。レポートで言うように、上位レベルでは、両方のクエリを呼び出して分割することができますが、むしろすべてを単一のSQLクエリに含めることができます。

私が探しているのは、SQLを使用してこれらのクエリを組み合わせる方法に関する一般的なアイデアです。

ありがとうございます!

+0

この抽象的な答えを試すのではなく、この特定のケースに対処しましょう。 –

答えて

6

制約なしには1で、1行のデカルト積を登録しよう行

SELECT worked/available AS PercentageCapacity 
FROM (SELECT worked FROM A), 
    (SELECT available FROM B) 
+0

私は本質的にこれを使用し終わった。非常に重要なことは、行のエイリアシングであったにもかかわらず、行にも当てはまりました。私はその点について自分自身を混乱させていました。 – Jazzepi

1

答えはデータの出所によって異なります。

それは単一のテーブルから来る場合、それは同じように簡単なものが考えられます。

select totalHours, availableHours, (totalHours - availableHours) as difference 
from hoursTable 

しかし、データが別のテーブルから来ている場合は、行ができるように、いくつかの特定の列を追加する必要がありますデータの有用なビューを提供するために一緒に結合されています。

あなたの質問の例を投稿して、あなたの質問への回答の仕方をよく知ることができます。

+0

私は実際にどのデータベースで作業しているかについて詳細と詳細を質問に再表示します。 http://stackoverflow.com/questions/4474364/combining-queries-to-calculate-values – Jazzepi

1

あなたは、クエリを照会することができます

SELECT 
    a.ID 
    a.HoursWorked/b.HoursAvailable AS UsedWork 
FROM 
    (SELECT ID, HoursWorked FROM Somewhere) a 
INNER JOIN 
    (SELECT ID, HoursAvailable FROM SomewhereElse) b 
ON 
    a.ID = b.ID 
+0

もちろん、これは整数であるか、悪い数学を持つことに注意してください。 – HLGEM

1

あなたは各クエリの結果を格納する変数を宣言し、その差を返すことができます。

DECLARE @first INT 
DECLARE @second INT 

SET @first = SELECT val FROM Table... 
SET @second = SELECT val FROM Table... 

SELECT @first - @second 
関連する問題