在sql join中基于相同的列值添加行值. [英] add row value based on same column value in sql join.

查看:78
本文介绍了在sql join中基于相同的列值添加行值.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对于不同的trgtVariableNAme列值具有相同的LineItemID列值,我想使用,"为同一lineItemID值添加trgtVariableNAme行值.

i have same LineItemID Column value for diffrent trgtVariableNAme column Value i want to add trgtVariableNAme Row value using '','' for the same lineItemID value

LineItemID   trgtVariableNAme  
1               a
1               b
2               c



加入后



after join

marketOrderID orderID LineNumber pageGroupName trgtVariableName endDate
1               2        1          abc            a              8/09/11
1               2        1          abc            b            8/09/11        
2               3        4           bcv           c             8/09/11



我想要这样



I want like this

marketOrderID orderID LineNumber pageGroupName trgtVariableName endDate
1               2        1          abc            a,b              8/09/11
2               3        4           bcv           c             8/09/11


如何在join或其他方法下进行修改?



how to modify below join or some other method?


SELECT c.marketOrderID, c.orderID,
  d.LineNumber, d.MarketPageGroupCode, t.pageGroupName,
  trgt.trgtVariableName, c.endDate
FROM tblMarketOrder c
INNER JOIN tblMarketOrderLineItem d
  ON c.marketOrderID = d.marketOrderID
INNER JOIN lkpAdsTargetPageGroup t
  ON t.pageGroupID = d.pageGroupID
INNER JOIN tblMarketOrderLineItemsTarget linetarget
  ON d.lineItemID = linetarget.lineItemID
INNER JOIN lkpTargetingVariable trgt
  ON linetarget.trgtVariableID = trgt.trgtVariableID

推荐答案

聚合级联""这不是一个容易的问题.

我为这件事加了一条有趣的文章...在这里
http://www.simple-talk.com /sql/t-sql-programming/concatenating-row-values-in-transact-sql/ [
"Aggregate concatenation" it''s not an easy issue.

I bookmarked an interesting article about it... here it is
http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/[^]


创建一个接受lineitemid的函数并返回逗号分隔的trgtVariableNAme.

下面的代码可以在函数中使用

Create a funtion which accept the lineitemid and return trgtVariableNAme with comma seperated.

Below code can be used in function

CREATE FUNCTION dbo.udf_GetCommaSepName (@LineItemID INT)
RETURNS VARCHAR(MAX)
BEGIN
DECLARE @Val VARCHAR(MAX)
SET @Val = ''
SELECT @Val = @Val + trgtVariableNAme + ',' FROM lkpTargetingVariable WHERE LineItemID = @LineItemID
RETURN LEFT(@Val,LEN(@Val)-1) --this will remove the comma from last.
END

--Use this function in you SQL Qeury like below...
SELECT c.marketOrderID, c.orderID,
  d.LineNumber, d.MarketPageGroupCode, t.pageGroupName,
  udf_GetCommaSepName(trgt.lineItemID) As trgtVariableName, c.endDate
FROM tblMarketOrder c
INNER JOIN tblMarketOrderLineItem d
  ON c.marketOrderID = d.marketOrderID
INNER JOIN lkpAdsTargetPageGroup t
  ON t.pageGroupID = d.pageGroupID
INNER JOIN tblMarketOrderLineItemsTarget linetarget
  ON d.lineItemID = linetarget.lineItemID
INNER JOIN lkpTargetingVariable trgt
  ON linetarget.trgtVariableID = trgt.trgtVariableID




我希望这能解决您的问题...

谢谢




I hope this resolve ur problem...

Thanks


这篇关于在sql join中基于相同的列值添加行值.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆