2012-04-27 112 views
1

我使用SQL Server和我有两个表,我想结合成一个查询,我可以用它来填充GridView控件。结合SQL Server的查询

表1 dbo.Work
UID(PK,INT)
Tech_Ticket(INT)
RMA_Ticket(INT)
区(nchar10)
完成(nchar10)
FA(nchar10)
代理(nvarchar50)
跟踪(nvarchar50)
DATE_ADDED(日期)
Date_Upda泰德(日期)

表2 dbo.Orders
UID(PK,INT)
订单(INT)
代理(nvarchar50)
票(INT)
笔记(nvarchar50)

现在我把它们设置为两个单独的查询和两个独立的表。

查询1:

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 2012-04-27 13:25:55

+0

这两个表格之间的共同点是什么? (代理?) – Brett 2012-04-27 13:28:35

+0

请将表的T-SQL代码添加到您的问题中,以便我们可以将代码复制到查询窗口中。使用降价代码格式也可以获得语法高亮显示。 – 2012-04-27 13:28:37

回答

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

编辑:拉马克的解决方案的作品。谢谢。 – user1361180 2012-04-27 13:44:23

+0

@ user1361180 - 很高兴工作。如果它正确回答了您的问题,请考虑将其标记为已接受(检查答案旁边的标记以将其从空心切换为绿色) – Lamak 2012-04-27 13:58:57