使用SQL Server 2005或更高,下面是一组T-SQL语句,将说明以上(使用交叉的COMBOX应用和case语句)的例子:
CREATE TABLE [dbo].[COExample](
[NAME] [varchar](50) NULL,
[INSTRUMENT] [varchar](50) NULL,
[BOOLEAN1] [bit] NULL,
[BOOLEAN2] [bit] NULL
);
INSERT INTO dbo.COExample VALUES('Bob','Organ',1,0);
INSERT INTO dbo.COExample VALUES('Thomas','Violin',0,0);
INSERT INTO dbo.COExample VALUES('Bob','Piano',0,1);
SELECT DISTINCT c.NAME, RTRIM(CombInstruments.combinstruments) AS 'INSTRUMENTS'
,CASE WHEN EXISTS(SELECT * FROM dbo.COExample b1 WHERE b1.NAME = c.NAME AND b1.BOOLEAN1 = 1) THEN 1 ELSE 0 END AS 'BOOLEAN1'
,CASE WHEN EXISTS(SELECT * FROM dbo.COExample b2 WHERE b2.NAME = c.NAME AND b2.BOOLEAN2 = 1) THEN 1 ELSE 0 END AS 'BOOLEAN2'
FROM dbo.COExample c
CROSS APPLY
(
SELECT ISNULL(c2.INSTRUMENT,'') + ' '
FROM dbo.COExample c2
WHERE c2.NAME = c.NAME
ORDER BY c2.INSTRUMENT FOR XML PATH('')
) CombInstruments(combinstruments)
我试图Excel的重复删除工具,但它没有强大到足以做到这一点... – Basj
*** *** SQL仅仅是*结构化查询语言* - 许多数据库系统使用的语言,但不是数据库产品...更高级的功能是特定于供应商的 - 因此我们真的需要知道您的数据库系统**(以及哪个版本)使用.... –