2014-01-15 5 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 не имеет ничего общего с концепцией пользовательского интерфейса, это просто язык запросов. Все другие подобные диалоги должны быть реализованы с помощью используемой вами платформы программирования.

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, сначала превратить его в хранимой процедуре.

затем добавить параметры Abit как

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. Создание хранимой процедуры - Somthing как то, что сказано выше -
  2. Захват диапазон дат вашего переднего конца
  3. Создание SQL соединение с вашим кодом и выполнение этой хранимой процедуры с параметрами в качестве начальных & конечных дат.

Дайте нам знать язык & paltform, который используется на переднем конце для получения более подробной информации.

Смежные вопросы