sqlserver group by的有关问题
sqlserver group by的问题求助
刚接触sqlserver,我使用group by 的时候会提示“因为该列没有包含在聚合函数或 GROUP BY 子句中”这样的提示,
例如:
name value1 value2 value3
A A1 A2 A3
A A_1 A_2 A_3
B B1 B2 B3
我需要把name对应的值只列出一次 如果单独用group by name的话会报上面的错
网上说可以把其他的字段用max()或者min()这类的函数列出 但这样就不能保证三个值是一条记录的结果
求助该怎么做! 实在对这个数据库无奈里
------解决方案--------------------
刚接触sqlserver,我使用group by 的时候会提示“因为该列没有包含在聚合函数或 GROUP BY 子句中”这样的提示,
例如:
name value1 value2 value3
A A1 A2 A3
A A_1 A_2 A_3
B B1 B2 B3
我需要把name对应的值只列出一次 如果单独用group by name的话会报上面的错
网上说可以把其他的字段用max()或者min()这类的函数列出 但这样就不能保证三个值是一条记录的结果
求助该怎么做! 实在对这个数据库无奈里
------解决方案--------------------
- SQL code
select b.* from (select distinct [name] from table_name) a cross apply (select top(1) * from table_name where [name] = a.[name] order by value1 desc) b
------解决方案--------------------
- SQL code
CREATE TABLE tb ( name VARCHAR(10), value1 VARCHAR(10), value2 VARCHAR(10), value3 VARCHAR(10) ) GO INSERT INTO tb SELECT 'A', 'A1', 'A2', 'A3' UNION SELECT 'A', 'A_1', 'A_2', 'A_3' UNION SELECT 'B', 'B1', 'B2', 'B3' GO SELECT * FROM tb AS A WHERE (SELECT COUNT(1) FROM tb WHERE A.name = name AND A.value1 > value1) < 1
------解决方案--------------------
- SQL code
SELECT * FROM TAB A WHERE NOT EXISTS ( SELECT 1 FROM TAB WHERE NAME = A.NAME AND (value1 < A.value1 OR value1 = A.value1 AND value12 < A.value2 OR value1 = A.value1 AND value12 = A.value2 AND value13 < A.value3) )
------解决方案--------------------
1:如果数据量多 先把T_User 的数据放到一张临时表里(insert into tb select * from tb_ where vcuserName like '%1%')
然后用这张表和其他表做关联
2:
join col..=col..
where col..
关联字段和where条件判断字段都增加索引