1

次のエラーが発生します。

Each GROUP BY expression must contain at least one column that is not an outer reference

calculatedDrugDistributionHistory施設別、月別、年別の一覧が欲しいです。どの月のどの施設がシステムにインポートされたかの一覧を取得したいだけです。

私はこのクエリを持っています:

select 
    f.name,
    MONTH(cddh.dateGiven) as 'date_month',
    YEAR(cddh.dateGiven) as 'date_year' 
from 
    calculatedDrugDistributionHistory cddh
        inner join facilityIndividuals fi on fi.facilityIndividualId = cddh.facilityIndividualId
        inner join facilities f on fi.facilityId = f.facilityId
group by 
    f.name,
    'date_month',
    'date_year'
order by
    f.name,
    'date_month',
    'date_year'
4

4 に答える 4

0

2 つの問題。まず、列のエイリアスに一重引用符を使用しています。二重引用符または角括弧を使用します。select次に、集計関数を使用せずにすべての列を句に含める必要がありますgroup by

select f.name, MONTH(cddh.dateGiven) as date_month, YEAR(cddh.dateGiven) as date_year'
from calculatedDrugDistributionHistory cddh
        inner join facilityIndividuals fi on fi.facilityIndividualId = cddh.facilityIndividualId
        inner join facilities f on fi.facilityId = f.facilityId
group by  f.name, MONTH(cddh.dateGiven), YEAR(cddh.dateGiven)
order by f.name, date_month, date_year;

では列のエイリアスを使用できますが、 では使用できorder byませんgroup by

于 2013-07-25T13:26:35.483 に答える
0

group by 句ではエイリアスを使用できません。この方法を試してください:

select 
    f.name,
    MONTH(cddh.dateGiven) as date_month,
    YEAR(cddh.dateGiven) as date_year 
from calculatedDrugDistributionHistory cddh
inner join facilityIndividuals fi on fi.facilityIndividualId = cddh.facilityIndividualId
inner join facilities f on fi.facilityId = f.facilityId
group by 
    f.name,
    MONTH(cddh.dateGiven),
    YEAR(cddh.dateGiven) 
order by
    f.name,
    date_month,
    date_year
于 2013-07-25T13:24:15.717 に答える
0

でエイリアスを使用することはできません。使用できるGROUP BY場合は、単一引用符で記述しないでください。

select 
    f.name,
    MONTH(cddh.dateGiven) as date_month,
    YEAR(cddh.dateGiven) as date_year 
from 
    calculatedDrugDistributionHistory cddh
        inner join facilityIndividuals fi on fi.facilityIndividualId = cddh.facilityIndividualId
        inner join facilities f on fi.facilityId = f.facilityId
group by 
    f.name,
    MONTH(cddh.dateGiven),
    YEAR(cddh.dateGiven)
order by
    f.name,
    date_month,
    date_year
于 2013-07-25T13:27:46.637 に答える