Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Mỗi biểu thức GROUP BY phải chứa ít nhất một cột không phải là tham chiếu bên ngoài

Để bắt đầu, bạn không thể làm điều này:

having rid!=MAX(rid)

Mệnh đề HAVING chỉ có thể chứa những thứ là thuộc tính của các nhóm tổng hợp.

Ngoài ra, 1, 2, 3 không hợp lệ trong GROUP BY trong SQL Server - Tôi nghĩ điều đó chỉ hợp lệ trong ORDER BY.

Bạn có thể giải thích tại sao đây không phải là thứ bạn đang tìm kiếm không:

select 
LEFT(SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000), PATINDEX('%[^0-9]%', SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000))-1),
qvalues.name,
qvalues.compound,
MAX(qvalues.rid)
 from batchinfo join qvalues on batchinfo.rowid=qvalues.rowid
where LEN(datapath)>4
group by LEFT(SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000), PATINDEX('%[^0-9]%', SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000))-1),
qvalues.name,
qvalues.compound


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách APPROX_COUNT_DISTINCT () hoạt động trong SQL Server

  2. Excel 32-bit và SQL Server 64-bit

  3. Hiển thị ngày sự kiện tiếp theo

  4. Trả về Phần trăm của Tập hợp Kết quả trong SQL Server

  5. Tổng quan về Nhiệm vụ Dịch vụ giám sát cơ sở dữ liệu mới nhất - Spotlight Cloud