我已经运行了一个查询来获得我满意的某些结果,但现在我想插入一段代码,这将迫使用户手动输入结果的日期范围。
到目前为止我的代码是.....
SELECT vwREP_GP_ContractProjectPurchaseCostCatID.PACOSTCATID AS COST_CAT_CODE,
vwREP_GP_ContractProjectPurchaseCostCatID.PACOSTCATNME AS COST_CAT_NAME,
vwREP_GP_ContractProjectPurchaseRpt.COST,
vwREP_GP_ContractProjectPurchaseRpt.ITEMDESC AS ITEM,
vwREP_GP_ContractProjectPurchaseRpt.CREDITOR,
vwREP_GP_ContractProjectPurchaseRpt.DOC_NUM AS DOCUMENT_NUMBER,
vwREP_GP_ContractProjectPurchaseRpt.DESCRIPTION,
vwREP_GP_ContractProjectPurchaseRpt.DOC_DATE AS DATE,
vwREP_GP_ContractProjectPurchaseRpt.PROJECT AS JOB_CODE_STAGE,
vwREP_GP_ContractProjectPurchaseRpt.COMPOUNDNAME AS CATEGORY_DESCRIPTION
FROM vwREP_GP_ContractProjectPurchaseCostCatID INNER JOIN
vwREP_GP_ContractProjectPurchaseRpt ON vwREP_GP_ContractProjectPurchaseCostCatID.PACOSTCATID = vwREP_GP_ContractProjectPurchaseRpt.PACOSTCATID
SELECT CATEGORY_DESCRIPTION, CAST(SUM(COST) AS DECIMAL(12, 2)) AS TOTAL_COST
FROM (
SELECT COMPOUNDNAME AS CATEGORY_DESCRIPTION, COST
FROM vwREP_GP_ContractProjectPurchaseRpt
) A
GROUP BY
CATEGORY_DESCRIPTION
我正在考虑插入一串代码......
SELECT * FROM vwREP_GP_ContractProjectPurchaseRpt
WHERE (DOC_DATE >= @DateFrom)
AND (DOC_DATE <= @DateTo)
但是我一直在坚持如何让它发挥作用。
我们非常感谢任何建议。
所有工作都在SQL Server Management Studio 2005上完成,最终将部署在MS Visual Studio上。
抱歉我在粘贴代码时错过了这个。我宣布我的各种各样的变种......
DECLARE @DateFrom datetime
DECLARE @DateTo datetime
然后是......
SELECT * FROM vwREP_GP_ContractProjectPurchaseRpt
WHERE (DOC_DATE >= @DateFrom)
AND (DOC_DATE <= @DateTo)
它所做的只是返回一个空白的结果窗格?
答案 0 :(得分:3)
由于您没有提供有关您问题的大量详细信息,因此我将尝试对其进行处理。
如果要将某种参数(日期)传递给查询,则需要使用存储过程。类似的东西:
CREATE PROCEDURE [dbo].[sp_test]
(
@DateFrom datetime,
@DateTo datetime
)
AS
SELECT *
FROM vwREP_GP_ContractProjectPurchaseRpt
WHERE DOC_DATE >= @DateFrom
AND DOC_DATE < DATEADD(DAY, 1, @DateTo)
这将允许您将DateTo和DateFrom传递给查询。然后,如果要在发布的第二个查询中使用WHERE子句,则执行以下操作:
CREATE PROCEDURE [dbo].[sp_test]
(
@DateFrom datetime,
@DateTo datetime
)
AS
SELECT CATEGORY_DESCRIPTION, CAST(SUM(COST) AS DECIMAL(12, 2)) AS TOTAL_COST
FROM
(
SELECT COMPOUNDNAME AS CATEGORY_DESCRIPTION, COST
FROM vwREP_GP_ContractProjectPurchaseRpt
WHERE DOC_DATE >= @DateFrom
AND DOC_DATE < DATEADD(DAY, 1, @DateTo)
) A
GROUP BY CATEGORY_DESCRIPTION
然后当您去查询结果时,您将执行以下操作:
exec dbo.test '5/1/12', '5/30/12'
答案 1 :(得分:0)
声明后,变量将被初始化为NULL
。
这个条件:
WHERE (DOC_DATE >= @DateFrom)
AND (DOC_DATE <= @DateTo)
不适用于变量设置为NULL
的任何记录。
为变量指定一些值。