SELECT [ID], 字段1, 字段2, 字段3 
FROM ([ID], 字段1, 字段2, 字段3, ROW_NUMBER() OVER(PARTITION BY 字段1 ORDER BY [ID]) AS RN 
FROM T ) R 
WHERE R.RN = 1 OR R.字段1 = 0 
ORDER BY R.ID 

解决方案 »

  1.   

    SELECT * --这里把你要显示的列显示出来,但是不要显示oid
    FROM (
    SELECT *,ROW_NUMBER()OVER(PARTITION BY 字段1 ORDER BY 主键) oid
    FROM a
    WHERE 字段N='X'
    UNION ALL
    SELECT *,1 oid
    FROM A
    WHERE 字段1=0)a
    WHERE a.oid=1这是2005的写法
      

  2.   


    SELECT * 
    FROM a a1 
    WHERE 主键 IN
    (
    SELECT TOP 1 主键
    FROM a
    WHERE 字段1=a1.字段1 AND 字段1<>0 AND 字段N='X'
    ORDER BY 主键
    )
      

  3.   

     int brandid = id;
            SqlConnection con = new SqlConnection(_conn);
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "select * from kucun2013 a1 where id in(select top 1 id from kucun2013 where guigecategoryid=a1.guigecategoryid and guigecategoryid<>0 and brandid=@brandid)";
               
            cmd.Parameters.AddWithValue("@brandid", brandid);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            using (sda)
            {
                sda.Fill(dt);
            }
            ListView1.DataSource = dt;
            ListView1.DataBind();///解决,谢谢,果然高手多