Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将3个SQL查询合并为1个_Sql_Linq - Fatal编程技术网

将3个SQL查询合并为1个

将3个SQL查询合并为1个,sql,linq,Sql,Linq,我有3个查询需要合并成一个。给你 SELECT COUNT(e.EmployeeID) AS TotalEmpCount FROM Employees as e WHERE HomePhone <> '' SELECT COUNT(e.EmployeeID) AS USEmpCount FROM Employees as e INNER JOIN Orders as o ON e.EmployeeID=o.EmployeeID WHERE e.HomePhone <>

我有3个查询需要合并成一个。给你

SELECT COUNT(e.EmployeeID) AS TotalEmpCount
FROM Employees as e
WHERE HomePhone <> ''

SELECT COUNT(e.EmployeeID) AS USEmpCount
FROM Employees as e
INNER JOIN Orders as o ON e.EmployeeID=o.EmployeeID
WHERE e.HomePhone <> '' AND e.Country='US' AND o.OrderDate BETWEEN '11/01/2011' AND GETDATE()


SELECT COUNT(e.EmployeeID) AS UKEmpCount
FROM Employees as e
INNER JOIN Orders as o ON e.EmployeeID=o.EmployeeID
WHERE HomePhone <> '' AND Country ='UK' AND o.OrderDate BETWEEN '01/01/2011' AND '12/31/2012'
我需要一个返回3列的查询:TotalEmpCount、USEmpCount、UKEmpCount

我需要T-SQL和Linq格式的查询

我自己解决了这个问题:

SELECT  (
        SELECT COUNT(*) 
FROM Employees as e
WHERE HomePhone <> ''
        ) AS TotalEmpCount,
        (
        SELECT COUNT(*)
FROM Employees as e
INNER JOIN Orders as o ON e.EmployeeID=o.EmployeeID
WHERE e.HomePhone <> '' AND e.Country='US' AND o.OrderDate BETWEEN '11/01/2011' AND GETDATE()
        )  AS USEmpCount,
        (
        SELECT COUNT(*)
FROM Employees as e
INNER JOIN Orders as o ON e.EmployeeID=o.EmployeeID
WHERE HomePhone <> '' AND Country ='UK' AND o.OrderDate BETWEEN '01/01/2011' AND '12/31/2012'
        )  AS UKEmpCount

这将给您相同的结果:

SELECT COUNT(e.EmployeeID) AS TotalEmpCount,
    USEmpCount = SUM(CASE WHEN e.Country='US' AND o.OrderDate BETWEEN '11/01/2011' AND GETDATE() THEN 1 ELSE 0 END),
    UKEmpCount = SUM(CASE WHEN e.Country ='UK' AND o.OrderDate BETWEEN '01/01/2011' AND '12/31/2012' THEN 1 ELSE 0 END)
FROM Employees as e
LEFT JOIN Orders o
    ON e.EmployeeID = o.EmployeeID
WHERE HomePhone <> ''

你可以通过问一个问题来改进你的问题。。。并展示你的1查询完成了什么以及你遇到了什么样的错误。如果我已经有一个查询,我可能一开始就不会问任何问题。展示你的尝试并询问你如何改进或使其发挥作用,比告诉我们你需要什么和期待答案要好得多。