我在找出将两个SQL查询组合成一个表达更多想法的SQL查询的方法时遇到了一些麻烦。
例如,假设我有查询A和查询B.查询A返回工作小时数。查询B返回工作人员可用的总小时数。这些查询中的每一个都返回一个包含单行的列。
但我真正想要的是查询A而不是查询B.我想知道已经工作的容量的百分比。
我知道如何独立编写查询A和B,但是当我试图找出如何使用这些预先编写的查询来提出一起使用它们的新SQL查询时,我的问题就来了。我知道,在更高的层面上,比如在报告中说,我可以调用两个查询然后将它们分开,但我宁愿将它全部包含在一个SQL查询中。
我正在寻找的是关于如何使用SQL组合这些查询的一般概念。
谢谢!
答案 0 :(得分:8)
无约束JOIN,1行1行笛卡尔积
SELECT worked/available AS PercentageCapacity
FROM ( SELECT worked FROM A ),
( SELECT available FROM B )
答案 1 :(得分:2)
答案取决于数据的来源。
如果它来自单个表格,它可以像以下一样简单:
select totalHours, availableHours, (totalHours - availableHours) as difference
from hoursTable
但是如果数据来自不同的表,则需要添加一些标识列,以便可以将行连接在一起以提供一些有用的数据视图。
您可能希望发布查询示例,以便我们更好地了解如何回答您的问题。
答案 2 :(得分:2)
您可以查询查询:
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
答案 3 :(得分:2)
您可以声明变量来存储每个查询的结果并返回差异:
DECLARE @first INT
DECLARE @second INT
SET @first = SELECT val FROM Table...
SET @second = SELECT val FROM Table...
SELECT @first - @second