FlySpeed SQLクエリのアプリではなく、Microsoft SQL Serverの管理Studioで:SQL Server Management Studioでクエリが機能しない
SELECT *
FROM
table1 t
JOIN
(SELECT
col1, col2, CONVERT(date, col3) as dt
FROM
table1
GROUP BY
col1, col2, dt
HAVING
COUNT(*) > 1) temp ON t.col1 = temp.col1
AND t.col2 = temp.col2
AND CONVERT(date, t.col3) = dt
ORDER BY
t.col1 desc
私はSSMSでこれを取得する:
メッセージ207、レベル16、状態1、行5
無効な列名 ' dt '。
'temp.col1'のように' temp.dt'を試してください –
グループのカラムエイリアスは、byを使うことはできないので、 'GROUP BY col1、col2、dt'の代わりに式全体を使う必要があります - 'GROUP BY col1、col2、CONVERT(date、col3)'。これは、 'GROUP BY'が' SELECT'の前に評価されているので、これを評価するとき、クエリエンジンは列 'dt'を知りません(言い換えれば、 – GarethD
これは価値があるのですが、ウィンドウ関数を使って同じことを達成し、テーブルから一度だけ読み込むことができます: 'SELECT * FROM(SELECT *、cnt = COUNT(* )OVER(PARTITION BY col1、col2、CONVERT(date、col3))FROM table1)t WHERE t.Cnt> 1' – GarethD