在表中获得一行两行 [英] get one row of two row in a table

查看:76
本文介绍了在表中获得一行两行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有下表:



i have below table :

ID   SalesID    Qt    unit
 1    1355      20    2500
 2    1355      20    5000
 3    1356      37    30000
 4    1356      37    20000
 5    1356      37    5000





现在我想查询以下结果





Now i want to get query for below result

SalesID    Qt1   unit1    Qt2   unit2    Qt3   unit3
 1355      20    2500     20    5000
 1356      37    30000    37    20000    37    5000







我需要回答这个问题请帮帮我




I need to answer this question please help me

推荐答案

测试一下:

Test it:
--declare destination table
DECLARE @data TABLE (ID INT IDENTITY(1,1), SalesID INT, Qt INT, unit INT)
--insert data
INSERT INTO @data (SalesID, Qt, unit)
SELECT 1355 AS SalesID, 20 AS Qt, 2500 AS unit
UNION ALL SELECT 1355, 20, 5000             
UNION ALL SELECT 1356, 37, 30000            
UNION ALL SELECT 1356, 37, 20000          
UNION ALL SELECT 1356, 37, 5000 

--declare temporary table to store RowNo
DECLARE @tmp TABLE (RowNo INT, ID INT, SalesID INT, Qt INT, unit INT)
--insert data
INSERT INTO @tmp (RowNo, SalesID, Qt, unit)
SELECT ROW_NUMBER() OVER(PARTITION BY Qt ORDER BY SalesID) AS RowNo, SalesID, Qt, unit
FROM @data

--pivot data
SELECT PT2.SalesID, SUM(PT4.[Qt1]) AS [Qt1], SUM(PT2.[unit1]) AS [unit1], SUM(PT4.[Qt2]) AS [Qt2], SUM(PT2.[unit2]) AS [unit2], 
		SUM(PT4.[Qt3]) AS [Qt3], SUM(PT2.[unit3]) AS [unit3]
FROM (
	SELECT RowNo, SalesID, [unit1], [unit2], [unit3]
	FROM (
		SELECT RowNo, SalesID, 'Qt' + CONVERT(VARCHAR(10), RowNo) AS QtDesc, Qt, 'unit' + CONVERT(VARCHAR(10), RowNo) AS UnitDesc, unit AS Unit
		FROM @tmp AS T
		) AS DT1
	PIVOT(MAX(Unit) FOR UnitDesc IN ([unit1], [unit2], [unit3])) AS PT1) AS PT2
LEFT JOIN (
	SELECT RowNo, SalesID, [Qt1], [Qt2], [Qt3]
	FROM ( 
		SELECT RowNo, SalesID, 'Qt' + CONVERT(VARCHAR(10), RowNo) AS QtDesc, Qt, 'unit' + CONVERT(VARCHAR(10), RowNo) AS UnitDesc, unit AS Unit
		FROM @tmp AS T
		) AS DT2
	PIVOT(MAX(Qt) FOR QtDesc IN ([Qt1], [Qt2], [Qt3])) AS PT3
	) AS PT4 ON PT2.RowNo = PT4.RowNo 
GROUP BY PT2.SalesID





输出:



Output:

1355    57  5000    57  10000   NULL    NULL
1356    57  60000   57  40000   37  5000


SQL Server:

SQL Server:
SELECT TOP 1 SalesID FROM table


我找到了解决方法。



i使用c#代码。
I find solution for this.

i use c# code .


这篇关于在表中获得一行两行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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