2

新しい列のエイリアスを作成し、それをGROUPBY句で使用しようとすると問題が発生します。

SELECT TOP 100 Percent
count(id) AS [items_by_day],    
(SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, [date]))) AS [date_part]
FROM [MyDB].[dbo].[MyTable]
GROUP BY DAY([date]), MONTH([date]), YEAR([date]), date_part

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

Msg 207, Level 16, State 1, Line 5
Invalid column name 'date_part'.

どうすれば問題を解決できますか?

4

2 に答える 2

4

サブクエリはどうですか?

sqlfiddleで私のデモを参照してください

Select  Count(*) as nrOfRecords, sq.[items_by_day], sq.[date_part] 
From (
    SELECT TOP 100 Percent count(id) AS [items_by_day]
      ,(Select Dateadd(dd, 0, Datediff(dd, 0, [date]))) AS [date_part]
    From  [MyTable] 
    Group By id, date
) as sq
Group by sq.[items_by_day], sq.[date_part]

パーツ(SELECT DateAdd(... DateDiff(...))はプレーンな日付を返しているようです。私が欠けているものを説明できますか?

于 2012-10-27T23:53:24.477 に答える
1

GROUP BYで列エイリアスを使用することはできません。エイリアスは表示用です。ただし、エイリアスがサブクエリ内にある場合(この場合は列名)を除きます。

于 2012-10-28T09:56:48.440 に答える