2012-04-27 4 views
1

Я использую SQL Server, и у меня есть две таблицы, и я хотел бы объединить в один запрос, который я могу использовать для заполнения gridview.Объединение запросов SQL Server

Table1 dbo.Work
UID (PK, INT)
Tech_Ticket (интермедиат)
RMA_Ticket (интермедиат)
область (nchar10)
Завершено (nchar10)
FA (nchar10)
Агент (nvarchar50)
Отслеживание (nvarchar50)
Дата_добавить (указать)
Дата_Upda Ted (дата)

Table2 dbo.Orders
UID (PK, INT)
Order (интермедиат)
Агент (nvarchar50)
Ticket (интермедиат)
Notes (nvarchar50)

Прямо сейчас у меня есть настройка как два отдельных запроса и две отдельные таблицы.

Query1:

SELECT [Agent], 
    SUM(CASE WHEN [Date_Added] BETWEEN @startDate AND @endDate THEN 1 ELSE 0 END) AS 'New ', 
    SUM(CASE WHEN [Date_Updated] BETWEEN @startDate AND @endDate THEN 1 ELSE 0 END) AS 'Worked', 
    SUM(CASE WHEN [Completed] = 'yes' AND [Date_Updated] BETWEEN @startDate AND @endDate THEN 1 ELSE 0 END) AS 'Completed', 
    SUM(CASE WHEN [Failure_Analysis] = 'yes' AND [Date_Updated] BETWEEN @startDate AND @endDate THEN 1 ELSE 0 END) AS 'FA' 
    FROM Work 
    GROUP BY [Agent] 

Query2:

SELECT [Agent] 
    SUM(CASE WHEN [Date] BETWEEN @startDate AND @endDate THEN 1 ELSE 0 END) AS 'Orders' 
    FROM Orders 
    GROUP BY [Agent] 

Есть ли способ объединить эти два запросов в один?

+0

Я предлагаю вам взглянуть на играя, они могут объединить несколько таблиц в запросе вместе. – Lex

+0

Какое общее поле между двумя таблицами? (Agent?) – Brett

+0

Пожалуйста, добавьте код T-SQL для таблиц на свой вопрос, чтобы мы могли скопировать код в окно запроса. Используйте форматирование кода разметки, чтобы получить подсветку синтаксиса. –

ответ

1

Вы можете JOIN им. Предполагая, что Work является основной таблицей, она должна быть такая:

SELECT A.*, B.Orders 
FROM ( SELECT [Agent], 
       SUM(CASE WHEN [Date_Added] BETWEEN @startDate AND @endDate THEN 1 ELSE 0 END) AS 'New', 
       SUM(CASE WHEN [Date_Updated] BETWEEN @startDate AND @endDate THEN 1 ELSE 0 END) AS 'Worked', 
       SUM(CASE WHEN [Completed] = 'yes' AND [Date_Updated] BETWEEN @startDate AND @endDate THEN 1 ELSE 0 END) AS 'Completed', 
       SUM(CASE WHEN [Failure_Analysis] = 'yes' AND [Date_Updated] BETWEEN @startDate AND @endDate THEN 1 ELSE 0 END) AS 'FA' 
     FROM Work 
     GROUP BY [Agent]) A 
LEFT JOIN (SELECT [Agent] 
        SUM(CASE WHEN [Date] BETWEEN @startDate AND @endDate THEN 1 ELSE 0 END) AS 'Orders' 
      FROM Orders 
      GROUP BY [Agent]) B 
ON A.[Agent] = B.[Agent] 
+0

EDIT: решение Ламака работает. Спасибо. – user1361180

+0

@ user1361180 - Рад, что это сработало. Если он правильно ответил на ваш вопрос, пожалуйста, отметьте его как принятый (отметьте отметку рядом с ответом, чтобы переключить ее с полого на зеленый) – Lamak

Смежные вопросы