sql server 分组,把记录中的值横排,并排除多余数据

sql server 分组,把记录中的值横排,并排除多余数据,第1张

你这写的很不明确啊,,,上班时间和下班时间的定义方式是什么?没有一个时间限制?

我只能根据你的结果给你写出答案了,,,

CREATE TABLE test (aa VARCHAR(10),
   bb DATETIME)
INSERT INTO dbotest
        ( aa, bb )
                          
SELECT '张三','2013-4-9 06:00:00' 
UNION ALL
SELECT 
'张三','2013-4-9 06:30:00'
UNION ALL
SELECT 
'张三','2013-4-9 07:00:00'
UNION ALL
SELECT 
'张三','2013-4-9 15:30:00'
SELECT  FROM test
SELECT aa,MIN(bb) AS bb ,MAX(bb) AS cc
FROM dbotest
GROUP BY aa
------------------------
张三 2013-04-09 06:00:00000 2013-04-09 15:30:00000

我想您的意思是,将他查询者排在前头外,其它按归属id排序。很简单:
CREATE PROCEDURE PROCNAME
@归属ID INT
AS
select from tablename order by CASE WHEN 归属id=@归属id THEN -1 ELSE 归属id END
GO

select paixu,id from td group by paixu,id order by id(paixu-05)
如果还要选别的列必须给该列加上聚合函数 比如min() max()都可以

把你的结果集作为中间表T1(ksmc,lx,cnt)
select lx,
sum(case when lx='办公用品' then cnt else 0 end) '办公用品',
sum(case when lx='纺织品' then cnt else 0 end) '饭'纺织品'
from T1
group by ksmc

不是特别明白你的意思。
如果是想把查询结果中的某一列的所有数据横排显示的话,比如一个后台方法,返回一个DataTable,要将第x列的数据横排显示。
for(int i = 0; i < tableRowsCount; i++)
{
tableRows[i][x] //第i行第x列的内容,具体你要怎么显示,还是给别的变量赋值,看需求了
}

老师和学生的人数不确定,做应该可以做出来的,不过很烦。
我把主要思路写下来,具体语句你自己写吧。
--将所有老师插入临时表,PKID为主键
select distinct row_number() over(order by getdate()) PKID,cph into #temp from [zcgl][dbo][jlsdxy] group by cph
declare @Count int --统计列数
declare @Sum int,@index int --老师总数量
select @Count=0,@Sum=count(),@index=1 from #temp
while(@index<@Sum+1)--循环插入学生到临时表
begin
declare @cph varchar(50) --老师姓名
select @cph = cph from #temp where PKID = @index --取出循环对应的老师名字
select distinct xm into #Temps from [zcgl][dbo][jlsdxy] where cph=@cph --取出当前老师对应的学生
declare @StudentCount int --学生总数量
declare @StudentIndex int -- 循环初始值
select @StudentCount=count(xm),@StudentIndex=1 from #Temps
if(@StudentCount>@Count)--如果列数大于@Count,往临时表插入列
begin
while(@Count<@StudentCount)
begin
--为临时表#temp插入一列
set @Count= @Count+1
end
end

declare @InsertSQL varchar(4000) --组合插入语句SQL
while(@StudentIndex < @Count+1)
begin
--在这里组合插入语句列
end
while(@StudentIndex < @Count+1)
begin
--在这里组合插入语句值
end
--执行插入语句
--查询临时表数据得到你想要的结果
end
怎么组合语句,怎么取列名自己想想吧。或许这个方法能对你有用


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13347351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存