Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何基于rownumber动态创建新列_Sql_Sql Server - Fatal编程技术网

Sql 如何基于rownumber动态创建新列

Sql 如何基于rownumber动态创建新列,sql,sql-server,Sql,Sql Server,我在我的表上创建了如下查询: WITH CTE_count as ( select Customer_ID as ID,Brand_Name +'-'+ cast([Sale_Amount] as nvarchar) as brandname,ROW_NUMBER() OVER (PARTITION BY Customer_ID ORDER BY Customer_ID) AS lineNumber from dbo.sheet1 group by Customer_ID,Brand

我在我的表上创建了如下查询:

WITH CTE_count
as
(
 select Customer_ID as ID,Brand_Name +'-'+ cast([Sale_Amount] as nvarchar) as 
 brandname,ROW_NUMBER() OVER (PARTITION BY Customer_ID ORDER BY Customer_ID)
 AS lineNumber
 from dbo.sheet1
 group by Customer_ID,Brand_Name,[Sale_Amount]
)
 SELECT ID, brandname,lineNumber
 FROM CTE_count;
当我运行此命令时,我得到以下输出:

现在,如何为每个客户ID获取1行,如:

客户id订单1订单2订单3订单4
100000443 AMANA-71.31 AMANA-104.4 AMANA-109.89 AMANA-104.4

如何修改上述查询

我想对每一个ID执行此操作,该行仅作为示例使用您的Cte,do

...
Select cust_id,
  max(when lineNumber=1 then brandname end) order1,
  max(when lineNumber=2 then brandname end) order2,
  max(when lineNumber=3 then brandname end) order3,
  max(when lineNumber=4 then brandname end) order4
From Cte_count group by cust_id, brandname

您需要编写动态透视查询以获得结果。
参考链接:


@DancingFool你能在这里给出建议吗?但是我的每个Id都有不同的顺序数。我刚才给出了这4个示例。我想这样做,对于每个Id,你必须“硬编码”你想在select语句中显示的最大列数。如果要显示的项目较少,则最后一列将保持为空。因此,请根据我的模式随意添加一些。我已经在您的解决方案中添加了sc。结果现在被拆分了,但我仍然在不同的行中得到结果,只是如果order1值存在,那么order2,3,4对于4 order customer是空的。在下一排,订单2已经填好了,我知道了,我做错了,谢谢。不要批准我所做的编辑。我试图把它们移走,但没能成功