在线等:求一sql语句

liaoxiaohua1981 2006-06-14 04:17:28
表worda
有四个字段 a b c d
有条记录值为 0 1 0 1

我要统计出这条记录中值为1的字段名
即呈现结果为: b d
该怎么写sql
...全文
323 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoman_xiaoman 2006-06-15
  • 打赏
  • 举报
回复

create @tbl (colname varchar(8),colvalue int)
insert into @tbl select 'a',a from worda
.........
insert into @tbl select 'd',d from worda
select distinct colname from @tbl where colvalue=1
其余用游标把数值连接起来。
losedxyz 2006-06-14
  • 打赏
  • 举报
回复
mark
dssw 2006-06-14
  • 打赏
  • 举报
回复
declare @t table (a int, b int , c int ,d int )

insert into @t
select 0,1,0,1 union all
select 1,1,0,0

select
(case a when 1 then 'a' when 0 then '' end) +
(case b when 1 then 'b' when 0 then '' end) +
(case c when 1 then 'c' when 0 then '' end) +
(case d when 1 then 'd' when 0 then '' end)
from @t
fcuandy 2006-06-14
  • 打赏
  • 举报
回复
我的写法是针对数据表的字段名和字段数不定的情况下,也就是说比较通用.

如果有多条记录
有四个字段 a b c d
有条记录值为 0 1 0 1
有条记录值为 1 1 0 1
楼主所需的结果是 abd

我上面的语句稍作修改就可以了.
RTRIM(NULLIF(1,' + ColName + '这里稍改改改成 对ColName的sum并与0比较NULLIF即可.


fcuandy 2006-06-14
  • 打赏
  • 举报
回复
CREATE TABLE tab(a int,b int,c int,d int)
INSERT tab
SELECT 0,1,1,0


SELECT
a.colorder ColID,
a.name ColName
INTO #tmp
FROM syscolumns a
inner join sysobjects d
on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
where d.name='tab'
order by a.id,a.colorder

DECLARE @str VARCHAR(2000)
SET @str=''
SELECT @str=@str + 'ISNULL(RTRIM(NULLIF(1,' + ColName + ')),''' + ColName + ''')+' FROM #Tmp
SELECT @str=LEFT(@str,LEN(@str)-1)
EXEC ('SELECT REPLACE(' + @str + ',''1'','''') FROM tab')
DROP TABLE tab
DROP TABLE #tmp
云中客 2006-06-14
  • 打赏
  • 举报
回复
这个问题有难度,关注
云中客 2006-06-14
  • 打赏
  • 举报
回复
楼上好像没有理解楼主的意思吧,是要显示字段名,而不是把这字段名当做值来显示
xiaoman_xiaoman 2006-06-14
  • 打赏
  • 举报
回复
create @tbl (colname varchar(8),colvalue int)
insert into @tbl select 'a',a from worda
.........
insert into @tbl select 'd',d from worda
select * from @tbl where colvalue=1
liaoxiaohua1981 2006-06-14
  • 打赏
  • 举报
回复
没人回答吗?自己先顶上
下载代码方式:https://pan.quark.cn/s/c66ecb4d06ce 同源策略:从安全角度出发,浏览器会对脚本发起的跨站请求施加限制,要求JavaScript或Cookie仅能获取同源(即协议、域名和端口完全一致)下的资源。正因如此,不同项目间的调用会受到浏览器的阻碍。以常见情境为例:WebApi作为数据服务层,它是一个独立的项目,而MVC项目则承担Web的展示功能,此时MVC项目需要调用WebApi中的接口以获取数据并在页面上呈现。由于WebApi与MVC属于两个独立的项目,运行后便会产生前面提及的跨域问题。WebApi的跨域问题主要源于浏览器的同源策略,这是一种安全措施,旨在限制JavaScript或Cookie仅能访问同一源(包括协议、域名和端口)下的内容。在实际开发过程中,当WebApi作为一个独立服务,例如数据服务层,而MVC项目作为前端展示层时,两者运行在不同的项目和端口下,浏览器将阻止MVC对WebApi的跨域请求,从而影响数据的正常获取。为了应对这一问题,我们可以采用CORS(跨域资源共享)机制。CORS通过在HTTP请求与响应头中嵌入特定标识,向浏览器明确哪些跨域请求是被允许的。例如,服务器可以在响应头中添加`Access-Control-Allow-Origin:http://localhost:8081`,表示允许来自http://localhost:8081的请求访问资源。解决WebApi跨域问题的具体实施步骤如下: 1. 构建一个包含MVC项目(Web)与Web API项目(WebApiCORS)的解决方案。 2. 在MVC项目中,例如Home控制器的Index视图,通过Ajax向WebApiCORS发起跨域请求。 3...

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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