2016-03-22 4 views
0

Я хочу ограничить виртуальный вычисляемый столбец в моем sql-запросе. Я не знаю, как это сделать. Вот мой запросКак ограничить виртуальные вычисляемые столбцы?

select Distinct(Chief_Complaint), COUNT(Chief_Complaint) as 'No. of Cases 
Encountered(January)', COUNT(Chief_Complaint) as 'No. of Cases Encountered(February)' 
from Medical_Treatment 
group by Chief_Complaint 

столбец Chief_Complaint является строкой

Я хочу добавить ограничение в COUNT (Chief_Complaint), как: «Нет (Январь) ", чтобы он учитывал только количество различных значений, которые являются январем из моей колонки даты, а также в COUNT (Chief_Complaint) как« Нет. (февраль) ', где месяц февраль Возможно ли это? Извините за мой английский

Благодарим за отзыв.

ответ

0

Будет ли что-то подобное работать для вас.

CREATE TABLE #Complaint(
    id     INT IDENTITY(1,1) 
    ,Chief_Complaint NVARCHAR(100) 
    ,ComplaintDate  DATETIME 
) 

INSERT INTO #Complaint 
    (Chief_Complaint, ComplaintDate) 
VALUES 
    ('Complaint1', '20160101') 
    ,('Complaint1', '20160101') 
    ,('Complaint1', '20160101') 
    ,('Complaint2', '20160101') 
    ,('Complaint2', '20160101') 
    ,('Complaint3', '20160101') 

    ,('Complaint1', '20160201') 
    ,('Complaint1', '20160201') 
    ,('Complaint2', '20160201') 
    ,('Complaint2', '20160201') 
    ,('Complaint2', '20160201') 


;WITH cteComplaints 
AS(
    SELECT 
     C.Chief_Complaint 
     ,CASE WHEN DATENAME(month, C.ComplaintDate) = 'January' 
      THEN COUNT(C.Chief_Complaint) 
     END 'January_CASES' 
     ,CASE WHEN DATENAME(month, C.ComplaintDate) = 'February' 
      THEN COUNT(C.Chief_Complaint) 
     END 'February_CASES' 
    FROM 
     #Complaint C 
    GROUP BY 
     C.Chief_Complaint,DATENAME(month, C.ComplaintDate) 
) 
SELECT 
    C.Chief_Complaint 
    ,SUM(ISNULL(C.January_CASES,0)) 'January_CASES' 
    ,SUM(ISNULL(C.February_CASES,0)) 'February_CASES' 
FROM 
    cteComplaints C 
GROUP BY 
    C.Chief_Complaint 

DROP TABLE #Complaint 
+0

Я думаю, что вы не получили мой вопрос. У меня уже есть база данных со столом «Medical_Treatment». Теперь все, что я хочу сделать, это ограничить мой оператор select. То, что я хочу, это так. Предположим, что это таблица. Chief_Complaint/No. Обнаруженных случаях (январь)/№. Обследованных случаев (февраль) Брюшной/3/5 – Jaypee

+0

Вы потеряли меня. Предоставьте схему вашей таблицы, тогда я увижу, что я могу сделать. –

+0

извините, если мой вопрос трудно понять. Хорошо, чтобы сделать его более ясным У меня есть таблица с именем Medical_Treatment, которая содержит 6 столбцов, но я буду называть только 2, потому что остальное не так важно. Столбцы - это дата, которая, очевидно, является типом даты и элементом Chief_Complaint, который является строкой. Каждая информация в столбце Chief_Complaint имеет соответствующую дату. Теперь я хочу пересчитать весь файл main_complaint в соответствии с месяцами в столбце даты. Вывод будет Chief_Complaint, Жалоба Январь, Жалоба Февраль, Жалоба Марта и т. Д. Надеюсь, вы могли мне помочь. – Jaypee