Concat tables into one row in view
Concat tables into one row in view
am 26.06.2007 22:45:06 von mattcushing
If I have table1 and table2 with table2 having multiple rows tied to a
single row in table 1.
What I am trying to do is set up a view that has one row that shows
the following
table1.uniqueid, table1.name, table2.row1.detail, table2.row2.detail,
table2.row3.detail
I'd like to be able to do a select on the view and only come back with
one row per widget. If possible, I'd actually like to be able to
concat all the rows from table 2 into one column if that's possible.
table1.uniqueid, table1.name, (table2.row1.detail - table2.row2.detail
- table2.row3.detail), table1.dateCreated
thx
M@
Re: Concat tables into one row in view
am 26.06.2007 23:19:29 von Erland Sommarskog
M@ (mattcushing@gmail.com) writes:
> If I have table1 and table2 with table2 having multiple rows tied to a
> single row in table 1.
>
> What I am trying to do is set up a view that has one row that shows
> the following
> table1.uniqueid, table1.name, table2.row1.detail, table2.row2.detail,
> table2.row3.detail
>
> I'd like to be able to do a select on the view and only come back with
> one row per widget. If possible, I'd actually like to be able to
> concat all the rows from table 2 into one column if that's possible.
>
> table1.uniqueid, table1.name, (table2.row1.detail - table2.row2.detail
> - table2.row3.detail), table1.dateCreated
SQL Server MVP Anith Sen has a couple of methods on
http://www.projectdmx.com/tsql/rowconcatenate.aspx.
--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downlo ads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books .mspx
Re: Concat tables into one row in view
am 26.06.2007 23:54:49 von mattcushing
found a really good alternative on sqlteam.com
USE Northwind
GO
CREATE FUNCTION dbo.ConcatOrderProducts(@OrderID int)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @Output VARCHAR(8000)
SELECT @Output = COALESCE(@Output+', ', '') + CONVERT(varchar(20),
P.ProductName)
FROM dbo.[Order Details] OD
JOIN dbo.Products P
ON P.ProductID = OD.ProductID
WHERE OD.OrderID = @OrderID
ORDER BY P.ProductName
RETURN @Output
END
GO
SELECT OrderID, CustomerID, dbo.ConcatOrderProducts(OrderID)
FROM Orders
GO
DROP FUNCTION dbo.ConcatOrderProducts
GO
Re: Concat tables into one row in view
am 27.06.2007 09:29:48 von Erland Sommarskog
M@ (mattcushing@gmail.com) writes:
> found a really good alternative on sqlteam.com
>
> USE Northwind
> GO
> CREATE FUNCTION dbo.ConcatOrderProducts(@OrderID int)
> RETURNS VARCHAR(8000)
> AS
> BEGIN
> DECLARE @Output VARCHAR(8000)
> SELECT @Output = COALESCE(@Output+', ', '') + CONVERT(varchar(20),
> P.ProductName)
Beware! The correct result of this operation is not defined! You may get
what you want, you may get something else! It works most of the time,
but there is no guarantee!
--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downlo ads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books .mspx