目标是列出具有每个col1值和多个col2值的col1和col2。必须删除col1 co2组合上的重复项。
我这样做是为了获得结果表。 通过此查询,可以显示第一列col1。 这是正确的方法吗?还是有更简单的方法?
with t1 as
(
select distinct [col1], col2, count([col1]) as col1Count
from [Table1]
where [col1] <> null
or len(ltrim(rtrim([col1]))) > 0
group by [col1], col2
having count([col1]) > 1
)
select [col1] from t1 group by t1.[col1] having count([col1]) > 1
源表
col1 col2 col3
====================
a a1 blah
a a1 blah2
a aa1 blah
a aa1 blah3
a1 b1 blah
b b1 blah
b b1 blah2
b bb1 blah
b bb1 blah2
b1 c1 blah
c c1 blah
c c1 blah2
c cc1 blah
c cc1 blah3
c1 d1 blah
结果表
col1 col2
===========
a a1
a aa1
b b1
b bb1
c c1
c cc1
答案 0 :(得分:1)
您可以protected void req_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataTable table = new DataTable();
var openCloseddl = e.Row.FindControl("openCloseddl") as DropDownList;
var assignddl = e.Row.FindControl("assignToddl") as DropDownList;
assignddl.DataMember = "username";
assignddl.DataValueField = "username";
assignddl.DataSource = table;
//get the values of the conditions that define which staff
var request_id = e.Row.Cells[0].Text;
var type = e.Row.Cells[3].Text;
var description = e.Row.Cells[4].Text;
var puc = e.Row.Cells[6].Text;
var quantity = e.Row.Cells[7].Text;
//fetch which staff member it's assigned to if exists.
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["studentOrderUpload"].ConnectionString);
SqlCommand comm = new SqlCommand("SELECT username from request_status WHERE request_id = @request_id and type = @type and description = @description and puc = @puc and quantity = @quantity", conn);
comm.Parameters.AddWithValue("@request_id", request_id);
comm.Parameters.AddWithValue("@type", type);
comm.Parameters.AddWithValue("@description", description);
comm.Parameters.AddWithValue("@puc", puc);
comm.Parameters.AddWithValue("@quantity", quantity);
try
{
conn.Open();
object result = comm.ExecuteScalar();
string resultText = (result == null ? "" : result.ToString());
conn.Close();
//if it's not assigned to anyone, show every staff member.
if (resultText == "")
{
if (type.ToLower().Contains("customized"))
{
SqlCommand cmd1 = new SqlCommand("select username from staff where type = 'customized'", conn);
conn.Open();
SqlDataAdapter ad1 = new SqlDataAdapter(cmd1);
ad1.Fill(table);
conn.Close();
assignddl.DataBind();
assignddl.SelectedValue = "Scholarship";
if (openCloseddl.SelectedValue == "Open")
{
openCloseddl.Enabled = true;
}
assignddl.Items.RemoveAt(1);
}
else
{
SqlCommand cmd1 = new SqlCommand("select username from staff where type ='standard'", conn);
conn.Open();
SqlDataAdapter ad1 = new SqlDataAdapter(cmd1);
ad1.Fill(table);
conn.Close();
assignddl.DataBind();
}
assignddl.Items.Insert(0, new ListItem("Select User"));
openCloseddl.Enabled = false;
if (openCloseddl.SelectedValue == "Open" && type.ToLower().Contains("customized"))
{
openCloseddl.Enabled = true;
}
}
//if it's assigned to someone, show only the assigned staff,
else
{
if (type.ToLower().Contains("customized"))
{
SqlCommand cmd1 = new SqlCommand("select username from staff where type = 'customized'", conn);
conn.Open();
SqlDataAdapter ad1 = new SqlDataAdapter(cmd1);
ad1.Fill(table);
conn.Close();
assignddl.DataBind();
assignddl.SelectedValue = "Scholarship";
if (openCloseddl.SelectedValue == "Open")
{
openCloseddl.Enabled = true;
}
assignddl.Items.RemoveAt(1);
}
else
{
SqlCommand cmd1 = new SqlCommand("select username from staff where type = 'standard'", conn);
conn.Open();
SqlDataAdapter ad1 = new SqlDataAdapter(cmd1);
ad1.Fill(table);
conn.Close();
assignddl.DataBind();
assignddl.SelectedValue = resultText;
}
}
if (openCloseddl != null)
{
SqlCommand comm1 = new SqlCommand("SELECT status from request_status WHERE request_id = @request_id and type = @type and description = @description and puc = @puc and quantity = @quantity", conn);
comm1.Parameters.AddWithValue("@request_id", request_id);
comm1.Parameters.AddWithValue("@type", type);
comm1.Parameters.AddWithValue("@description", description);
comm1.Parameters.AddWithValue("@puc", puc);
comm1.Parameters.AddWithValue("@quantity", quantity);
conn.Open();
object result1 = comm1.ExecuteScalar();
conn.Close();
if (result1.ToString() == "Closed")
{
openCloseddl.SelectedValue = "Closed";
openCloseddl.Enabled = false;
assignddl.Enabled = false;
if ((HttpContext.Current.User.Identity.Name.Equals("DocRequestAdmin")))
{
assignddl.Enabled = true;
openCloseddl.Enabled = true;
}
}
}
}
catch (Exception ee)
{
var error = ee.Message;
conn.Close();
}
var paid = e.Row.Cells[12].Text;
if (paid.Contains("Not"))
{
assignddl.SelectedValue = "Select User";
assignddl.Enabled = false;
openCloseddl.Enabled = false;
}
}
}
并在group by col1, col2
子句中输入条件:
having
如果select col1, col2
from tablename
group by col1, col2
having count(*) > 1
中有null
个或空白值,则可以添加一个col1
子句:
where
或
where (col1 is not null) and (len(rtrim(ltrim(col1))) > 0)
请参见demo。
结果:
where len(rtrim(ltrim(coalesce(col1, '')))) > 0