【问题标题】:how to get the value of side by side in a column in SQL如何在SQL中的列中并排获取值
【发布时间】:2017-03-27 13:46:49
【问题描述】:

如果我在表中有列,我在获取数据时遇到了一些问题

CDPRCL          CDITEM              CDSQFT      F162_U
18-020-0056     SOUND SYS           1.00        H
18-020-0056     WET BAR             2.00        D 

如您所见,CDPRCL 有两个相同的数字,但其他列中的数据不同。 我想要这种格式的数据,请看F162_U列的结果

CDPRCL          CDITEM              CDSQFT      F162_U
18-020-0056     SOUND SYS           1.00        H,D
18-020-0056     WET BAR             2.00        H,D

如何得到这个。请帮忙。 提前致谢

【问题讨论】:

  • 这是非常特定于 RDBMS 的。您使用的是 Sql Server 还是使用 Mysql?这是两个非常不同的数据库。
  • 何对不起。我正在使用 SQL Server
  • 你有多少个可能的值?总是有两行吗?
  • @Mukesh 如果我的回答对您有用,或者您对回答有任何疑问,请告诉我。如果它对您有用,请接受我的回复作为正确答案 - 以便其他用户可以受益:知道答案有效并将问题标记为已回答
  • 亲爱的 Gordon Linoff 这只是一个示例数据。我们在 F162_U 列中有很多不同字母的数据

标签: sql sql-server sql-server-2008 msbi


【解决方案1】:

请尝试这样的查询

select 
A.CDPRCL,
A.CDITEM,
A.CDSQFT,
STUFF((
 SELECT ','+ B.F162_U  
 FROM Yourtable B 
 WHERE B.CDPRCL=A.CDPRCL
 ORDER BY B.F162_U 
 FOR XML PATH ('')
 ),1, 1, '') AS  F162_U

from 
Yourtable A

【讨论】:

    【解决方案2】:

    选择 XML 路径如下:

    create table TestTable (CDPRCL varchar(20), CDITEM varchar(20), CDSQFT  float, F162_U varchar(10))
    
    Insert into TestTable  values('18-020-0056', 'SOUND SYS', 1.00, 'H')
    Insert into TestTable  values('18-020-0056', 'WET BAR', 2.00, 'D')
    
    Select CDPRCL, CDITEM, CDSQFT, substring((Select ', ' + F162_U
                From TestTable Tbl2
                Where Tbl1.CDPRCL = Tbl2.CDPRCL
                For XML PATH ('') ),2,1000)
    from TestTable Tbl1
    

    【讨论】:

      猜你喜欢
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多