C# 合并gridview行并消除重复项
我有两张桌子:C# 合并gridview行并消除重复项,c#,asp.net,sql,sql-server-2008,pivot,C#,Asp.net,Sql,Sql Server 2008,Pivot,我有两张桌子: Table 1 id question customerId 1 bla1 1 2 bla2 2 Table 2 id customerId Key Value 1 1 firstname John 2 1 lastname Doe 3 2 firstname Billy 4
Table 1
id question customerId
1 bla1 1
2 bla2 2
Table 2
id customerId Key Value
1 1 firstname John
2 1 lastname Doe
3 2 firstname Billy
4 2 lastname Jones
我需要让我的gridview显示:
Row 1: John Doe Bla1
Row 2: Billy Jones Bla2
目前它显示:(但我不想这样):
我想我什么都试过了,需要你的帮助!谢谢
SELECT [firstname],[lastname], question
FROM
(
SELECT a.question, b.[key], b.[value]
FROM Table1 a
INNER JOIN Table2 b
ON a.customerID = b.CustomerID
) org
PIVOT
(
MAX([value])
FOR [KEY] IN ([firstname],[lastname])
) pvt
╔═══════════╦══════════╦══════════╗
║ FIRSTNAME ║ LASTNAME ║ QUESTION ║
╠═══════════╬══════════╬══════════╣
║ John ║ Doe ║ bla1 ║
║ Billy ║ Jones ║ bla2 ║
╚═══════════╩══════════╩══════════╝
使用以下查询选择绑定网格的数据:
SELECT
a.id,
a.Question,
(SELECT Value + ' ' FROM Table2 b WHERE b.customerId=a.customerid
FOR XML PATH(''),type).value('.','nvarchar(max)') Value
FROM Table1 a
如果您想在SQL中解决这个问题,可能需要表表达式:+1表示SQL FIDLE。这很有趣:)我必须在我的数据库上创建要测试的结构。我正在使用gridview,但DataKeyNames=“Id”DataBinding:“System.Data.DataRowView”不包含名为“Id”的属性。“我为DataKeyNames放什么?不管怎样,我只是将DataKeyNames全部去掉。”。谢谢你的甜蜜解决方案。你一定是个天才!
SELECT [firstname],[lastname], question
FROM
(
SELECT Q.ID, Question, Q.CUSTOMERID, KeyId, KeyValue
FROM QUESTION Q
INNER JOIN CUSTOMERMAP C ON Q.CUSTOMERID=C.CUSTOMERID
) as Data
PIVOT
(
MAX(KeyValue)
FOR KeyId in ([firstname],[lastname])
) as PT;
SELECT
a.id,
a.Question,
(SELECT Value + ' ' FROM Table2 b WHERE b.customerId=a.customerid
FOR XML PATH(''),type).value('.','nvarchar(max)') Value
FROM Table1 a