我有以下2 JOIN声明:使用JOIN语句加入对另一组的结果的结果JOIN语句
--Get Total Hrs
DECLARE @BeginDate datetime, @EndDate datetime
set @BeginDate = '01-01-2013'
set @EndDate = '12-31-2013'
BEGIN
SELECT F.Type, E.Product, SUM(F.Hours * E.Amount) AS 'Total Hours'
FROM Hours H
INNER JOIN Equipment E
ON F.SN = E.SN
WHERE (F.Date BETWEEN @BeginDate AND @EndDate)
GROUP BY F.Type, E.Product
ORDER BY Product ASC
END
--Get Number of Unscheduled Removals
DECLARE @BeginDate1 datetime, @EndDate1 datetime
set @BeginDate1 = '01-01-2013'
set @EndDate1 = '12-31-2013'
BEGIN
SELECT LEFT(dbo.fn_GetPartName(R.PartID),CHARINDEX('-',dbo.fn_GetPartName(R.PartID), 1) - 1) AS 'Part No',
Count(s.status) AS NumberUnscheduledRemovals
FROM Repair R
INNER JOIN Conversion C
ON R.Performed = C.Performed
AND R.Confirmed = C.Confirmed
INNER JOIN Status S
ON C.StatusID = S.StatusID
WHERE (R.Received BETWEEN @BeginDate1 AND @EndDate1)
AND (S.Status = 'UNSCHEDULED')
GROUP BY LEFT(dbo.fn_GetPartName(R.PartID),CHARINDEX('-',dbo.fn_GetPartName(R.PartID), 1) - 1)
ORDER BY LEFT(dbo.fn_GetPartName(R.PartID),CHARINDEX('-',dbo.fn_GetPartName(R.PartID), 1) - 1) ASC
END
两个查询有结果,包括part numbers
(这些具有相同的值)。我想INNER JOIN
这两个查询的结果来自于产生的part numbers
。已经尝试了一段时间,但似乎没有得到正确的语法来做到这一点。
优秀!!!这是一个快速而简单的解决方案。而不是使用CREATE ...我只是在第一个查询中使用了INSERT INTO #myTempTbl,然后在第二个查询结束时删除了#myTempTable,并为未来创建了一个storedProcedure。感谢解决方案 –
我花了几年时间为Sybase编写存储过程(SQL的远房亲戚)。 #Temp表是解决和分解复杂程序任务的最常用方法。其他RDBMS风格(甲骨文,MySQL等)将会有不同的方法。它表明在选择解决方案或方法之前,您确实需要了解您的工作环境(即SQL Server,Transact SQL)! –