2014-01-15 11 views
-1

我是SQL新手(只有大約一週的實踐經驗)。以下聲明起作用。我所需要做的就是放入提示符,允許用戶輸入開始日期和結束日期。該查詢然後將提取該信息。我不知道如何將其納入到where語句的末尾。希望這很容易。SQL中的表達式

SELECT COUNT (DISTINCT JOBS.JOB) AS Number_of_Jobs, 
     COUNT (DISTINCT SAMPLES.sampnum) AS Number_of_Samples, 
     clients.csa 
FROM Jobs 
    INNER JOIN Clients ON jobs.client = clients.client 
    INNER JOIN Samples ON samples.job = jobs.job 
WHERE 
    jobs.jobstatus = 'NEW' OR jobs.jobstatus = 'REPORTED' 
GROUP BY 
    CSA 
+2

您正在開發哪種編程語言? – everton

+1

你在哪裏以及如何執行/運行此查詢? – StackTrace

+1

你從哪裏調用此查詢? SQL Server Management Studio? – Taosique

回答

2

不,不幸的是,這並不像您希望的那麼容易。 SQL與UI概念沒什麼共同之處,它只是一種查詢語言。 所有其他類似對話框的東西都必須通過您正在使用的編程平臺來實現。

0

您需要一種方法讓用戶調用過程/代碼。

@DateFrom datetime = DATEADD(dd,-7,GETDATE()), 
@DateTo datetime = GETDATE() 

WHERE yourDateColumn BETWEEN @DateFrom AND @DateTo 

WHERE yourDateColumn >= @DateFrom AND yourDateColumn < @DateTo 
0

以及如果這是MS SQL,第一使之成爲一個存儲過程。

然後添加參數升技像

USE [your db] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE PROCEDURE [dbo].[storedprocname] 
@datefrom as datetime, 
@datetoo as datetime, 
AS 
SELECT COUNT (DISTINCT JOBS.JOB) AS Number_of_Jobs, COUNT (DISTINCT SAMPLES.sampnum) AS Number_of_Samples, clients.csa 
FROM Jobs INNER JOIN Clients ON jobs.client = clients.client INNER JOIN Samples ON samples.job = jobs.job 
WHERE jobs.jobstatus = 'NEW' OR jobs.jobstatus = 'REPORTED' AND (date => @datefrom and date <= @datetoo) 
GROUP BY CSA 

,你可以調用應用程序中的這個存儲過程並通過datefrom和日期太那個用戶提供。那就是如果有應用程序。

0
SELECT COUNT (DISTINCT JOBS.JOB) AS Number_of_Jobs, 
     COUNT (DISTINCT SAMPLES.sampnum) AS Number_of_Samples, 
     clients.csa 
    FROM Jobs,Clients,samples 
    where jobs.client = clients.client AND 
    samples.job = jobs.job AND 
    yourDateColumn >= @DateFrom AND yourDateColumn < @DateTo AND 

    (jobs.jobstatus = 'NEW' OR jobs.jobstatus = 'REPORTED') 

    GROUP BY CSA 


    Try this one, I don't know your dates, i except one date between from date and to 
    date from db then 

    yourDateColumn >= @DateFrom AND yourDateColumn <= @DateTo 
+0

對不起,我沒有在聲明中看到輸入開始日期和結束日期?我的基本查詢工作,我不知道如何或在哪裏添加輸入開始日期/完成日期 – Aaron

0

理想的解決辦法 -

USE [YOUR_DB_NAME] 
GO 

CREATE PROCEDURE [dbo].[YOUR_PROCEDURE_NAME] (
    @BeginDate DATETIME, 
    @EndDate DATETIME 
) 
AS 

SELECT COUNT (DISTINCT JOBS.JOB) AS Number_of_Jobs, 
     COUNT (DISTINCT SAMPLES.sampnum) AS Number_of_Samples, 
     clients.csa 
FROM Jobs 
INNER JOIN Clients 
    ON jobs.client = clients.client 
INNER JOIN Samples 
    ON samples.job = jobs.job 
WHERE 
    (jobs.jobstatus = 'NEW' OR jobs.jobstatus = 'REPORTED') 
    AND YOUR_END_DATE_FIELD BETWEEN @BeginDate AND @EndDate 
GROUP BY CSA 
  1. 創建一個存儲過程 - 就像上述所說的財產以後 -
  2. 捕獲日期範圍從前端
  3. 創建一個SQL從您的代碼連接並使用參數作爲您的開始&結束日期執行此存儲過程。

讓我們知道您正在使用前端的語言&瞭解更多詳情。