尝试加入不正确的SQL 2008
想要联接这两个表,我在下面展示了我对每个表使用的查询以及我的联接尝试。如有任何帮助,将不胜感激尝试加入不正确的SQL 2008,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,想要联接这两个表,我在下面展示了我对每个表使用的查询以及我的联接尝试。如有任何帮助,将不胜感激 SELECT [Date] = CONVERT(char(10), CURRENT_TIMESTAMP -3, 103), Items = SUM(NumberOfItems), 'DUAL' as Sorter FROM [DB2].[DB2].[dbo].[SortStatistics] WHERE RecordedPeriod Between
SELECT [Date] = CONVERT(char(10),
CURRENT_TIMESTAMP -3, 103),
Items = SUM(NumberOfItems),
'DUAL' as Sorter
FROM [DB2].[DB2].[dbo].[SortStatistics]
WHERE RecordedPeriod Between '06/23/17 01:00:00AM' and '06/23/17 23:59:00PM'
AND WorkstationID IN ('D11', 'D12', 'D13')
SELECT [Date] = CONVERT(char(10),
CURRENT_TIMESTAMP -3, 103),
Misfires = SUM(Resolved),
'DUAL' as Sorter
FROM [DB1].[DB1].[dbo].[MisfireLog]
WHERE RecordedPeriod Between '06/23/17 01:00:00AM' and '06/23/17 23:59:00PM'
and WorkstationID IN ('D11', 'D12', 'D13')
结果是
Date Items Sorter
23/06/2017 39983 DUAL
Date Misfires Sorter
23/06/2017 247 DUAL
这是我加入的尝试
SELECT [Date] = CONVERT(char(10),
CURRENT_TIMESTAMP -3, 103),Items = SUM(SortStatistics.NumberOfItems),
Misfires = SUM(MisfireLog.Resolved),
'DUAL' as Sorter
FROM [DB2].[DB2].[dbo].[SortStatistics]
LEFT JOIN [DB1].[DB1].[dbo].[MisfireLog]
ON SortStatistics.RecordedPeriod = MisfireLog.RecordedPeriod
WHERE SortStatistics.RecordedPeriod Between '06/23/17 01:00:00AM' and '06/23/17 23:59:00PM'
AND SortStatistics.WorkstationID IN ('D11', 'D12', 'D13')
and MisfireLog.WorkstationID IN ('D11', 'D12', 'D13')
连接尝试的结果如下所示,这是关闭的
Date Items Misfires Sorter
23/06/2017 691822 735 DUAL
当您加入表格时,打开
SortStatistics.RecordedPeriod = MisfireLog.RecordedPeriod
结果将不包含与基表相同数量的记录
结果
23/06/2017 39983 247 DUAL
您只需要将已有的两个查询的输出连接起来。因为这两种方法都是单行输出,所以我们可以像这样使用交叉连接
SELECT t1.[Date],t1.Items,t2.Misfires,t1.Sorter
FROM
(
SELECT [Date] = CONVERT(char(10),
CURRENT_TIMESTAMP -3, 103),
Items = SUM(NumberOfItems),
'DUAL' as Sorter
FROM [DB2].[DB2].[dbo].[SortStatistics]
WHERE RecordedPeriod Between '06/23/17 01:00:00AM' and '06/23/17 23:59:00PM'
AND WorkstationID IN ('D11', 'D12', 'D13')
)t1
CROSS JOIN
(
SELECT [Date] = CONVERT(char(10),
CURRENT_TIMESTAMP -3, 103),
Misfires = SUM(Resolved),
'DUAL' as Sorter
FROM [DB1].[DB1].[dbo].[MisfireLog]
WHERE RecordedPeriod Between '06/23/17 01:00:00AM' and '06/23/17 23:59:00PM'
and WorkstationID IN ('D11', 'D12', 'D13')
)t2;
您是否希望输出为2017年6月23日39983 247 DUAL?然后,在使用SELECT*FROM(query1)t1交叉连接(query2)t2进行count
之后,需要对表进行交叉连接
@ughai您介意展示脚本吗,到目前为止我还没有使用交叉连接,我感谢您的帮助完美!!!干杯@ughai…..如果我想展示Percent=SUM(NumberOfItems)-SUM(已解析)/SUM(NumberOfItems)
我是否必须在t1和t2查询部分输入?