2016-03-22 17 views
0

SQL sorguğımda sanal olarak hesaplanmış bir sütunu kısıtlamak istiyorum. Nasıl yapılacağına dair hiçbir fikrim yok. İşte benim sorgu varSanal Hesaplanmış sütunlar nasıl kısıtlanır?

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 

Hayır' olarak Chief_Complaint bir karakter dizisinin

ben COUNT Kısıtlama eklemek istediğim kolon (Chief_Complaint) Karşılaşılan Vakaların (Ocak) ', böylece yalnızca Tarih Sütunundan Ocak ayı olan ayrı değerlerin sayısını ve COUNT (Chief_Complaint)' in No olarak belirtilmesi gerekir. Karşılaşılan Davaların (Şubat) 'Ayın Şubat Ayı Mümkün mü? Sayfam için üzgünüm

Yanıtınız için teşekkür ederiz.

cevap

0

Böyle bir şey sizin için çalışacaktır.

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

Sanırım sorumu anlamadın. Zaten 'Medical_Treatment' tablosuna sahip bir veritabanım var. Şimdi tek yapmak istediğim seçimimi kısıtlamak. Bu sahip olmak istediğim şey böyle. Bunun bir masa olduğunu varsayalım. Chief_Complaint/No. Karşılaşılan Davaların (Ocak)/Hayır. Karşılaşılan Davaların (Şubat) Abdominal/3/5 – Jaypee

+0

Beni kaybettiniz. Masanızın bir şemasını sağlayın, sonra ne yapabileceğimi göreceğim. –

+0

Sorunun anlaşılması zor ise üzgünüm. Daha net hale getirmek için Tamam 6 sütun içeren Medical_Treatment adlı bir tablom var ancak geri kalanı sadece önemli değil. Sütunlar, bir tarih türü olan ve bir dize olan Chief_Complaint olan Tarihlerdir. Chief_Complaint sütunundaki her verinin karşılık gelen bir Tarihi vardır. Şimdi, tarih sütümümdeki aylara dayanarak tüm chief_complaint değerlerini saymak istiyorum. Çıktı, Chief_Complaint, Şikayet Ocak, Şikayet Şubesi, Şikayet Mart vs. olacak. Umarım bana yardımcı olabilirsiniz. – Jaypee

İlgili konular