读书人

sqlserver group by的有关问题

发布时间: 2012-06-08 12:55:24 作者: rapoo

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()这类的函数列出 但这样就不能保证三个值是一条记录的结果
求助该怎么做! 实在对这个数据库无奈里

[解决办法]

SQL code
select b.* from(select distinct [name] from table_name) across 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))GOINSERT INTO tbSELECT 'A', 'A1', 'A2', 'A3' UNION SELECT 'A', 'A_1', 'A_2', 'A_3' UNION SELECT 'B', 'B1', 'B2', 'B3'GOSELECT *FROM tb AS AWHERE (SELECT COUNT(1) FROM tb WHERE A.name = name AND A.value1 > value1) < 1
[解决办法]
SQL code
SELECT *FROM TAB AWHERE NOT EXISTS (SELECT 1FROM TABWHERE NAME = A.NAME AND (value1  < A.value1 OR value1  = A.value1 AND value12 < A.value2OR value1 = A.value1 AND value12 = A.value2AND value13 < A.value3))
[解决办法]
1:如果数据量多 先把T_User 的数据放到一张临时表里(insert into tb select * from tb_ where vcuserName like '%1%')
然后用这张表和其他表做关联

2:
join col..=col..
where col..
关联字段和where条件判断字段都增加索引

读书人网 >SQL Server

热点推荐