これは奇妙に思えます: [SQL FIDDLE]
2 人のユーザーは明らかに異なります。つまり、1<>2 です。では、なぜ個別のカウントが 1 と言っているのですか?
これは奇妙に思えます: [SQL FIDDLE]
2 人のユーザーは明らかに異なります。つまり、1<>2 です。では、なぜ個別のカウントが 1 と言っているのですか?
ここにいくつかの説明付きの答えがあります...
ユーザーは予約語だけではありません。これは、システム定義の読み取り専用グローバル変数に似ています。
現在のデータベースユーザーの名前に評価されます。したがって、すべての行が同じ値を取得し、count(distinct user)は1になります。
ユーザーは、システム定義のUSER_NAME()関数と同じ値を生成します。
したがって、Userを列名として扱いたい場合は、他の人が提案しているように、またcreatetableステートメントで行ったように[User]と記述します。
user
は予約済みキーワードです。実行する場合:
select DateKey, User from the_table
1
ユーザーがまたは2
ではなく、 のようなものであることがわかりますuser_b1234
。Lamakが提案したよう[user]
に、システム変数ではなく列を参照するために使用します。
私はあなたがこれを望んでいると思います:
select
COUNT(DateKey)
,count(distinct User) Cnt
from the_table
where Datekey = 20120103
group by
DateKey