求高手写SQL语句

九龙神 2007-06-01 11:31:04
数据库:
字段1 字段2 字段3
张三 北京 1
张三 北京 2
张三 北京 3
李四 天津 1
李四 天津 2
李四 天津 3
需要显示出来为:
字段1 字段2 字段3
张三 北京 1
2
3
李四 天津 1
2
3
如何写SQL语句?
...全文
294 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
九龙神 2007-06-12
  • 打赏
  • 举报
回复
大家看看上面的那张图片,它是怎么做到的?
sposf 2007-06-02
  • 打赏
  • 举报
回复
看看这样是否可行。。。。
Select field1,field2,field3 From [Table] Order by field1 DESC,field3 ASC
paoluo 2007-06-02
  • 打赏
  • 举报
回复
如果連排序的規則都定不了,就不好用SQL來做了,你在程序中處理吧。
九龙神 2007-06-02
  • 打赏
  • 举报
回复
看看下面这个搜索,它是怎么做到的?
单据编号 物料代码 物料名称
SOUT2266 023-2121 五孔插套(2007)
008-2148 五孔后座(2007)
022-0024 五孔插面
001-0024 插座安装支架
002-0024 插座面框
120-2148 小三插安全门
110-2148 二插安全门
121-2105 十一字圆柱头铜螺丝
002-2161 十一字盘头螺钉
401-2117 美式插弹簧
206-2102 内盒
206-2102 外盒
003-2128 尼龙袋
008-2190 合格证
500-2190 商标纸 4*5
510-2190 商标纸 6*8
SOUT2267 108-9999 暗盒螺母
020-0024 86暗盒座[百安居]
920-0024 暗盒滑块(短)
921-0024 暗盒底板
152-2102 86暗盒外箱
109-2141 收缩膜
102-2190 合格证
107-2141 86型暗盒条形码(浅)
九龙神 2007-06-02
  • 打赏
  • 举报
回复
按照lllyyymmm(傻貓) 的方法前两字段确实会只显示一个,但是会显示小的那个,如果字段3排列为3,2,1的话,那3,2两字段都是空调,在1前面有数据,我想得到的是在第一条出现记录的地方字段1,字段2才显示
九龙神 2007-06-02
  • 打赏
  • 举报
回复
字段3中的数据1,2,3只是举个例子而已,其实提前是不知道什么数据的!
-狙击手- 2007-06-01
  • 打赏
  • 举报
回复
declare @t table(字段1 char(4),字段2 char(4),字段3 int)
insert @t select '张三','北京',1 union
select '张三','北京',2 union
select '张三','北京',3 union
select '李四','天津',1 union
select '李四','天津',2 union
select '李四','天津',3



select
字段1=(case
when 字段3 = (select top 1 字段3 from @t where 字段1=a.字段1)
then a.字段1
else
' '
end),
字段2=(case
when 字段3 = (select top 1 字段3 from @t where 字段1=a.字段1)
then a.字段2
else
' '
end),
字段3
from @t a

/*
(所影响的行数为 6 行)

字段1 字段2 字段3
------- -------- -----------
李四 天津 1
2
3
张三 北京 1
2
3

*/
paoluo 2007-06-01
  • 打赏
  • 举报
回复
暈,寫錯了。


Select
(Case When 字段3 = 1 Then 字段1 Else '' End) As 字段1,
(Case When 字段3 = 1 Then 字段2 Else '' End) As 字段2,
字段3
From
TableName

但是這種東西最好在程序中處理
paoluo 2007-06-01
  • 打赏
  • 举报
回复


Select
(Case When 字段3 = 1 Then 字段1 Else '' End) As 字段1,
(Case When 字段2 = 1 Then 字段1 Else '' End) As 字段2,
字段3
From
TableName
lllyyymmm 2007-06-01
  • 打赏
  • 举报
回复
declare @t table(字段1 char(4),字段2 char(4),字段3 int)
insert @t select '张三','北京',1 union
select '张三','北京',2 union
select '张三','北京',3 union
select '李四','天津',1 union
select '李四','天津',2 union
select '李四','天津',3
select 字段1=case when not exists(select 1 from @t where 字段1=a.字段1 and 字段2=a.字段2 and 字段3 < a.字段3)
then 字段1 else '' end ,
字段2=case when not exists(select 1 from @t where 字段1=a.字段1 and 字段2=a.字段2 and 字段3 < a.字段3)
then 字段2 else '' end ,
字段3 from @t a

22,209

社区成员

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

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