Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将查询与组合并_Sql_Sql Server - Fatal编程技术网

Sql 将查询与组合并

Sql 将查询与组合并,sql,sql-server,Sql,Sql Server,你好,我正在使用SQL Server,我想按分类合并数据 我有一个这样的问题 SELECT a.NamaMerk, b.NamaTipe from MsMerk as a inner join MsTipe as b on a.ID_Merk = b.ID_Merk where a.FlagActive='Y' and b.FlagActive='Y' and a.ID_Merk = b.ID_Merk and b.ID_Tipe = b.ID_Tipe 这显示了数据 我想要这样的数据显

你好,我正在使用SQL Server,我想按分类合并数据 我有一个这样的问题

SELECT a.NamaMerk, b.NamaTipe from MsMerk as a inner join MsTipe  as b 
on a.ID_Merk = b.ID_Merk where a.FlagActive='Y' and b.FlagActive='Y' and a.ID_Merk = b.ID_Merk and b.ID_Tipe = b.ID_Tipe
这显示了数据

我想要这样的数据显示

SELECT a.NamaMerk, b.NamaTipe from MsMerk as a inner join MsTipe  as b 
on a.ID_Merk = b.ID_Merk where a.FlagActive='Y' and b.FlagActive='Y' and a.ID_Merk = b.ID_Merk and b.ID_Tipe = b.ID_Tipe
三星:银河S7

华硕:Zenfone 4


就像按类别合并数据一样,请帮助我感谢的

尝试一下。我使用row_number按namerk排序,当它大于1时,我将其设置为空字符串

    SELECT CASE 
         WHEN T.rank > 1 THEN '' 
         ELSE T.NamaMerk 
       END        AS 'NamaMerk', 
       T.NamaTipe AS 'NamaTipe' 
FROM   (SELECT a.NamaMerk, 
               b.NamaTipe, 
               Row_number() 
                 OVER( 
                   partition BY a.NamaMerk 
                   ORDER BY b.NamaTipe) AS 'RANK' 
        FROM   msmerk AS a 
               INNER JOIN mstipe AS b 
                       ON a.id_merk = b.id_merk 
        WHERE  a.flagactive = 'Y' 
               AND b.flagactive = 'Y' 
               AND a.id_merk = b.id_merk ) T

试试这个。我使用row_number按namerk排序,当它大于1时,我将其设置为空字符串

    SELECT CASE 
         WHEN T.rank > 1 THEN '' 
         ELSE T.NamaMerk 
       END        AS 'NamaMerk', 
       T.NamaTipe AS 'NamaTipe' 
FROM   (SELECT a.NamaMerk, 
               b.NamaTipe, 
               Row_number() 
                 OVER( 
                   partition BY a.NamaMerk 
                   ORDER BY b.NamaTipe) AS 'RANK' 
        FROM   msmerk AS a 
               INNER JOIN mstipe AS b 
                       ON a.id_merk = b.id_merk 
        WHERE  a.flagactive = 'Y' 
               AND b.flagactive = 'Y' 
               AND a.id_merk = b.id_merk ) T
使用Row_Number,当它为1时,将NamaMerk和NamTipe else空间加上NamaTipe连接起来

我认为这些你可能必须在SSRS中进行,因为这与显示有关

使用Row_Number,当它为1时,将NamaMerk和NamTipe else空间加上NamaTipe连接起来


我认为这些可能必须在SSRS中执行,因为它必须与显示有关。

因此,作为一个示例,您希望第二行三星值为空字符串?你为什么要这么做?了解可能有助于找到更好的解决方案。例如,您希望第二行的值为空字符串?你为什么要这么做?了解可能有助于找到更好的解决方案。只有使用单间距字体时,空格填充才能正常工作。不过这是一个很好的解决方案。只有在使用单间距字体时,用空格填充才能正常工作。然而,这是一个很好的解决方案。
DECLARE @tab TABLE (NamaMerk VARCHAR(10), NamaTipe VARCHAR(10))
INSERT INTO @tab
VALUES ('Samsung','Galaxy S7'),('Samsung','Galaxy S6'),
('Apple','iPhone 5'),('LG','G5'),('Asus','Zenfone 4'),
('Asus','Zenfone 7'),('Xiami', 'Mi Note 3'),
('Asus','Zenfone 5')

;WITH cte AS 
(
 SELECT *,ROW_NUMBER() OVER(PARTITION BY NamaMerk ORDER BY NamaTipe) AS Rn
 FROM @tab
)
SELECT CASE WHEN Rn=1 THEN NamaMerk + ':' + NamaTipe 
  ELSE REPLICATE(' ',LEN(NamaTipe)) + NamaTipe END AS Result
FROM cte;