高手请进,该问题不知该如何表达????

QuinsonYue 2006-11-17 12:56:49
问题如下:数据库ms-sql

周数(第几周) 课时
1 0
2 0
3 0
4 2
5 2
6 2
7 4
8 4
9 4
10 2
11 2
12 2
13 6
14 6
15 6
16 6
17 6
18 2

想得到如下结果:2(4-6周,10-12周,18周)
4(7-9周)
6(13-17周)

在sql里面或c#里面实现都可以。
...全文
164 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
caihong201 2006-11-18
  • 打赏
  • 举报
回复
最笨的方法:
"select disinct 课时 from 表 where 课时 != 0"
将结果存到string[] ls_1中
for(int i=0;i<ls_1.length;i++)
{
"select 周数 from 表 where 课时 = " + ls_1[i];
}
leaohong 2006-11-18
  • 打赏
  • 举报
回复
select 周数,课时 from table
group by 课时,周数
wch007 2006-11-18
  • 打赏
  • 举报
回复
也就是行与列的转换。
caihong201() 的方法可行```
QuinsonYue 2006-11-17
  • 打赏
  • 举报
回复
谢谢ariesy_zhk() ,你的数据我调试过,结果不对。
就是你那个意思:把相邻的周数按相等的课时归组,而且课时并不是定死的,也就是不一定是2,4,6.
leaohong 2006-11-17
  • 打赏
  • 举报
回复
不明白
ariesy_zhk 2006-11-17
  • 打赏
  • 举报
回复
不好意思啊,第一次在这发帖,不太会排格式
ariesy_zhk 2006-11-17
  • 打赏
  • 举报
回复
他的意思应该是数据库里面的数据是不定的吧,要把相邻的数据按相等的归组。
private void Group()
{
Hashtable ht = new Hashtable();
DataTable dt = new DataTable();
string week = dt.Rows[0][0].ToString();
string keshi = dt.Rows[0][1].ToString();
ht.Add(keshi,week);
bool startNewPeriod = true;
for(int i = 1;i< dt.Rows.Count;i++)
{
week = dt.Rows[i][0].ToString();
if (keshi == dt.Rows[i][1].ToString())
{
startNewPeriod = false;
}
else
{
startNewPeriod = true;
}
keshi = dt.Rows[i][1].ToString();
if (ht.Contains(keshi))
{
if (startNewPeriod == false)
{
string strValue = ht[keshi].ToString();
string[] split = strValue.Split(',');
string oldStr = split[split.Length-1];
string newStr = oldStr.Split('-')[0];
newStr = newStr + "-" + week;
strValue.Replace(oldStr,newStr);
ht.Remove(keshi);
ht.Add(keshi,strValue);

}
else
{
string strValue = ht[keshi].ToString();
strValue = strValue + "," + week + "-" + "week";
ht.Remove(keshi);
ht.Add(keshi,strValue);

}

}
else
{
string strValue = week + "-" + week;
ht.Add(keshi,strValue);
}

}
foreach(string key in ht.Keys)
{
string resultStr = key + ht[key].ToString();
Console.WriteLine(resultStr);
}

}
这样应该可以吧,没有验证,而且前提是你的数据库里面的是按周数顺序排列的。

zhuangwei_ 2006-11-17
  • 打赏
  • 举报
回复
select 周数 from 表 where 课时 = 2 or 课时 = 4 or 课时 = 6 group by 周数

不确定对不对。。

实在不会。。等高人救你吧。。
zhuangwei_ 2006-11-17
  • 打赏
  • 举报
回复
这样好像不符合你的意思哦。。 呵呵
zhuangwei_ 2006-11-17
  • 打赏
  • 举报
回复
select 周数
(select 周数 from 表 where 课时 = 4),
(select 周数 from 表 where 课时 = 4),
from 表 where 课时 = 2

我也是新手。。不知道对不对。。
ff167 2006-11-17
  • 打赏
  • 举报
回复
sql group by

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧