Мне нужно изменить следующий набор запросов sql 2014 для использования двух отдельных баз данных с двух разных серверов.ИСПОЛЬЗУЙТЕ 2 разных базы данных sql в одном запросе
Мне нужно сначала определить общий доход, общая стоимость, & общая валовая прибыль между двумя базами данных, прежде чем вычислять Среднее за последние 7 дней на основе суммы итогов выручки. текущая функция Я использую прекрасно работает, кроме него, не используя Сумма доходов Итоговые с обеих database.Tables [DBO]. [dw_rpt_traffic] & [mediaalpha]. [PublisherCallByDay]
Мне нужно, чтобы присоединиться к таблицам из 2 разных server.databases. Обратите внимание, что к ним следует добавить CallDate & CreateDate. Однако ни одна таблица не содержит всех дат за последние 90 дней (выполняется 90 дней на основе текущей даты), поэтому это повлияет на тип соединения.
Пересмотренный код: по-прежнему имеется проблема с последней частью кода для объединения данных из обоих источников данных для определения среднего значения. Ошибка: недопустимое имя объекта 'rpt'.
WITH RPT
AS (SELECT x.CreateDate
, x.RevenueTotals
, (x.RevenueTotals-x.COSTTOTALS) as GrossProfit
FROM (SELECT CAST(t.Create_DTG AS DATE) AS CreateDate
, SUM([AGENT_REV]+[ANCHOR_REV]+[CORP_REV]+[OFFSITE_REV]) as RevenueTotals
, SUM([MEDIA_EST_COST]+[OTHER_COST]) as COSTTOTALS
FROM sqlclus3.[abc1234RPT].[dbo].[dw_rpt_traffic] t,
WHERE CAST(t.CREATE_DTG AS DATE) > CAST(GETDATE() - 90 AS DATE)
GROUP BY CAST(t.CREATE_DTG AS DATE)
) x
)
SELECT r.CreateDate
,r.RevenueTotals
,r.GrossProfit
FROM RPT r
WHERE r.CreateDate > CAST(GETDATE() - 90 AS DATE)
ORDER BY r.CreateDate desc;
WITH Calls
AS (SELECT x.Call_Date
, x.RevenueTotals
, x.Gross_Profit
FROM (SELECT CAST(t.[CallDate] AS DATE) AS Call_Date
, SUM(Revenue) as RevenueTotals
, SUM(Cost) as CostTotals
, SUM(GROSSPROFIT) AS Gross_Profit
FROM [abc123ETL].[mediaalpha].[PublisherCallByDay] t
WHERE CAST(t.[CallDate] AS DATE) > CAST(GETDATE() - 90 AS DATE)
GROUP BY CAST(t.[CallDate] AS DATE)
) x
)
SELECT c.Call_Date
,c.RevenueTotals
,c.Gross_Profit
FROM Calls c
WHERE c.Call_Date > CAST(GETDATE() - 90 AS DATE)
ORDER BY c.Call_Date desc;
select A.Create_Date
, A.RevTotal as RevenueTotal
, A.Gross_profit as GrossProfit
, AVG(A.RevTotal) OVER (ORDER BY A.Create_Date
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) AVG7DAYS
FROM
(
Select Rpt.CreateDate as Create_Date
, sum(rpt.RevenueTotals+calls.RevenueTotals) as RevTotal
, sum(rpt.GrossProfit+calls.Gross_Profit) as GrossProfits
from rpt FULL OUTER JOIN calls
on rpt.createDate = calls.call_date
) A
ORDER BY a.Create_Date
OLD Код
use sqlclus3.ABC342
go
WITH cte
AS (SELECT x.CreateDate
, x.RevenueTotals
, x.RevenueTotals-x.COSTTOTALS as GrossProfit
, AVG(x.RevenueTotals) OVER (ORDER BY x.CreateDate
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) AS Avg7Days
FROM (SELECT CAST(t.Create_DTG AS DATE) AS CreateDate
, SUM([AGENT_REV]+[ANCHOR_REV]+[CORP_REV]+[OFFSITE_REV]) as RevenueTotals
, SUM([MEDIA_EST_COST]+[OTHER_COST]) as COSTTOTALS
FROM [dbo].[dw_rpt_traffic] t
WHERE CAST(t.CREATE_DTG AS DATE) > CAST(GETDATE() - 90 AS DATE)
GROUP BY CAST(t.CREATE_DTG AS DATE)
) x
)
SELECT c.CreateDate
,c.RevenueTotals
,c.Avg7Days
,c.GrossProfit
FROM cte c
WHERE c.CreateDate > CAST(GETDATE() - 90 AS DATE)
ORDER BY c.CreateDate desc;
Use SEASQL03.[ABC123]
go
WITH Calls
AS (SELECT x.Call_Date
, x.RevenueTotals
, x.Gross_Profit
, AVG(x.RevenueTotals) OVER (ORDER BY x.[Call_Date]
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) AS Avg7Days
FROM (SELECT CAST(t.[CallDate] AS DATE) AS Call_Date
, SUM(Revenue) as RevenueTotals
, SUM(Cost) as CostTotals
, SUM(GROSSPROFIT) AS Gross_Profit
FROM [mediaalpha].[PublisherCallByDay] t
WHERE CAST(t.[CallDate] AS DATE) > CAST(GETDATE() - 90 AS DATE)
GROUP BY CAST(t.[CallDate] AS DATE)
) x
)
SELECT c.Call_Date
,c.RevenueTotals
,c.Avg7Days
,c.Gross_Profit
FROM Calls c
WHERE c.Call_Date > CAST(GETDATE() - 90 AS DATE)
ORDER BY c.Call_Date desc;
Теги SQL-serversql-сервер-2014 Редактировать Резюме
Это не совсем понятно, что вы пытаетесь сделать здесь. –
Я считаю, что вам нужно проверить [связанные серверы] (http://stackoverflow.com/questions/4091960/sql-server-linked-server-example-query) – TTeeple
Я попробовал ваше предложение, однако это не нравится одинарные кавычки вокруг второй части оператора select. SELECT * FROM OPENQUERY (sqlplus3, SELECT * FROM abs212. [Dbo].[dw_rpt_traffic] –