如何将WHERE子句应用于SQL Server中的多个SELECT语句

时间:2017-04-03 03:43:17

标签: sql sql-server date select where-clause

我正在创建一个从多个表中选择数据的查询。我已经完成了所有查询,但现在我必须将WHERE子句应用于整个查询。 我有9个选择语句,这些都很好。正在从不同的表中选择数据。现在我想声明日期session,我希望根据提供的日期过滤所有数据。我使用以下查询:

SELECT 
    (SELECT COUNT(DISTINCT OrderItems.ProductID)
     FROM OrderItems) AS 'TotalSoldItemsDistinct', 
    (SELECT COUNT(OrderItems.ProductID)
     FROM OrderItems) AS 'TotalSoldItemsInDistinct',
    (SELECT COUNT(Orders.OrderID)
     FROM Orders) AS 'TotalOrders', 
   (SELECT COUNT(Orders.OrderID)
    FROM Orders
    WHERE Orders.OrderStatusID = @CompleteOStatusID) AS 'CompleteOrders', 
   (SELECT COUNT(Orders.OrderID)
    FROM Orders
    WHERE Orders.OrderStatusID = @PendingOStatusID) AS 'PendingOrders', 
   (SELECT COUNT(Orders.ClientID)
    FROM Orders
    WHERE Orders.ClientID != @WalkingCustID) AS 'namedcustomers',
   (SELECT COUNT(Orders.ClientID)
    FROM Orders
    WHERE Orders.ClientID = @WalkingCustID) AS 'WalkingCustomers',
   (SELECT SUM(OrderItems.PurchasePrice)
    FROM OrderItems) AS 'TotalPurchasePrice',
   (SELECT SUM(OrderItems.SalePrice) 
    FROM OrderItems) AS 'TotalSalePrice'

我从2个名为“Orders”和“OrderItems”的表格中选择数据,“订单”表格中的列TransactionDateOrderDate中的列OrderItems 1}}表我想在过滤器的地方使用有人可以建议如何对整个查询应用过滤器吗?

2 个答案:

答案 0 :(得分:1)

你可以试试这个

$NEWSYSTEMID = Read-Host -Prompt 'Please input SEJ SYSTEM ID' 
Write-Host "Changing TKSYSTEMID to '$NEWSYSTEMID'" 
dir | Rename-Item -NewName {$_.name -replace 'TKSYSTEMID',$NEWSYSTEMID}

$NEWDATETIME = Read-Host -Prompt 'Please input the upload date and time' 
Write-Host "Changing YYYY MM DD HHMM to '$NEWDATETIME'" 
dir | Rename-Item -NewName {$_.name -replace 'YYYY MM DD HHMM',$NEWDATETIME}

答案 1 :(得分:0)

结果并不完全清楚你想要什么,但这里有两种方法。

  1. 请尝试以下方法同时从2个表中选择数据(将日期替换为您的标准):

    SELECT * FROM Orders AS o INNER JOIN OrderItems AS i WHERE o.TransactionDate = '2015-02-12' AND i.OrderDate = '2015-02-12';

  2. SELECT *选择两个表中的所有列作为结果,而WHERE ... AND ... - 子句仅针对您定义的日期筛选结果。

    1. 请尝试以下操作,仅为与特定订单上的日期匹配的数据选择订单商品数据。

      SELECT i.* FROM Orders AS o INNER JOIN OrderItems AS i WHERE o.TransactionDate = i.OrderDate AND o.OrderID = '12345';

    2. SELECT i.*告诉查询只返回OrderItems的列。并且WHERE o.TransactionDate = i.OrderDate确保仅返回订单中具有OrderID“12345”的订单的相同日期的订单商品(使用AND o.OrderID = '12345'定义。如果您有一个字段“OrderID”,这将起作用在您的订单表上,您希望将其用作标准。