Sql 将查询与组合并
你好,我正在使用SQL Server,我想按分类合并数据 我有一个这样的问题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 这显示了数据 我想要这样的数据显
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;