-1
select CASE (id_referral) 
  WHEN 1 THEN 'Treatment' 
  WHEN 2 THEN 'Medication' 
  WHEN 3 THEN 'Medication' 
  WHEN 4 THEN 'Diagnosis / Tests' 
  WHEN 5 THEN 'Diagnosis / Tests' 
  ELSE 'Other'
  END as referralName ,
  count(id_referral) gCount 
from referralDetails
group by referralName 

エラーが発生しています

無効な列名 'referralName'

4

3 に答える 3

1

で列のエイリアスを参照することはできないGROUP BYため、2 つのオプションがあります。

CASEでを再利用できますGROUP BY

select CASE (id_referral) 
  WHEN 1 THEN 'Treatment' 
  WHEN 2 THEN 'Medication' 
  WHEN 3 THEN 'Medication' 
  WHEN 4 THEN 'Diagnosis / Tests' 
  WHEN 5 THEN 'Diagnosis / Tests' 
  ELSE 'Other'
  END as referralName ,
  count(id_referral) gCount 
from referralDetails
group by CASE (id_referral) 
  WHEN 1 THEN 'Treatment' 
  WHEN 2 THEN 'Medication' 
  WHEN 3 THEN 'Medication' 
  WHEN 4 THEN 'Diagnosis / Tests' 
  WHEN 5 THEN 'Diagnosis / Tests' 
  ELSE 'Other'
  END

または、クエリをサブクエリでラップすることもできます。

select referralName, count(id_referral) gCount 
from
(
  select CASE (id_referral) 
    WHEN 1 THEN 'Treatment' 
    WHEN 2 THEN 'Medication' 
    WHEN 3 THEN 'Medication' 
    WHEN 4 THEN 'Diagnosis / Tests' 
    WHEN 5 THEN 'Diagnosis / Tests' 
    ELSE 'Other'
    END as referralName ,
    id_referral
  from referralDetails
 ) d
 group by referralName
于 2013-03-29T10:33:58.087 に答える
1

サブクエリでクエリを試すことができます:

select referralName, count(id_referral) gCount From
(SELECT 
CASE (id_referral )
    WHEN 1 THEN 'Treatment' 
    WHEN 2 THEN 'Medication' 
    WHEN 3 THEN 'Medication' 
    WHEN 4 THEN 'Diagnosis / Tests' 
    WHEN 5 THEN 'Diagnosis / Tests' 
    ELSE 'Other'
    END 
 referralName ,
    id_referral
  from referralDetails ) AS TABLE1 GROUP BY Test

または、余分な列を持つ列グループ数を返すこれを試すことができます

SELECT * FROM 
(SELECT 
CASE (id_referral )
    WHEN 1 THEN 'Treatment' 
    WHEN 2 THEN 'Medication' 
    WHEN 3 THEN 'Medication' 
    WHEN 4 THEN 'Diagnosis / Tests' 
    WHEN 5 THEN 'Diagnosis / Tests' 
    ELSE 'Other'
    END 
 referralName,

ROW_NUMBER() OVER (PARTITION BY  (CASE (id_referral )
    WHEN 1 THEN 'Treatment' 
    WHEN 2 THEN 'Medication' 
    WHEN 3 THEN 'Medication' 
    WHEN 4 THEN 'Diagnosis / Tests' 
    WHEN 5 THEN 'Diagnosis / Tests' 
    ELSE 'Other'
    END )  ORDER BY id_referral ) AS NO,

 COUNT(id_referral) OVER(PARTITION BY  (CASE (id_referral )
    WHEN 1 THEN 'Treatment' 
    WHEN 2 THEN 'Medication' 
    WHEN 3 THEN 'Medication' 
    WHEN 4 THEN 'Diagnosis / Tests' 
    WHEN 5 THEN 'Diagnosis / Tests' 
    ELSE 'Other'
    END )) AS gCount,

* FROM referralDetails)  AS TABLE1 WHERE no =1

また

SELECT * FROM (SELECT ROW_NUMBER() OVER (PARTITION BY referralName ORDER BY id_referral) AS NO,
COUNT(id_referral) OVER(PARTITION BY referralName) AS gCount,
* FROM
(SELECT CASE (id_referral % 100 )
    WHEN 1 THEN 'Treatment' 
    WHEN 2 THEN 'Medication' 
    WHEN 3 THEN 'Medication' 
    WHEN 4 THEN 'Diagnosis / Tests' 
    WHEN 5 THEN 'Diagnosis / Tests' 
    ELSE 'Other'
    END AS referralName ,* FROM dbo.referralDetails) AS T1)AS T2 WHERE No = 1
于 2013-03-29T10:34:58.733 に答える
1

以下のクエリで試してください

SELECT referralName, count(id_referral) gCount
FROM (SELECT CASE (id_referral) 
  WHEN 1 THEN 'Treatment' 
  WHEN 2 THEN 'Medication' 
  WHEN 3 THEN 'Medication' 
  WHEN 4 THEN 'Diagnosis / Tests' 
  WHEN 5 THEN 'Diagnosis / Tests' 
  ELSE 'Other'
  END as referralName ,
  id_referral
from referralDetails) tbl
group by referralName 
于 2013-03-29T10:41:42.857 に答える