【问题标题】:Create Dynamic Array创建动态数组
【发布时间】:2020-11-08 23:27:09
【问题描述】:

我有一个表名Tankdet,它有两列TCO 和Tanks。

这里是返回租用、自有和主要储罐数量的存储过程代码:

ALTER PROCEDURE [dbo].[sp_Dash_LeaseInformation]  
AS  
BEGIN  
 DECLARE @leased INT  
 DECLARE @owned INT
 DECLARE @principal INT
  
 SET NOCOUNT ON  
  
 SET @owned = (SELECT COUNT(*) FROM Tankdet WHERE ownleasetank='owned')  
 SET @leased = (SELECT COUNT(*) FROM Tankdet WHERE ownleasetank='leased')   
 SET @principal = (SELECT COUNT(*) FROM Tankdet WHERE ownleasetank='principle') 
 SELECT [Leased]=@leased,[Owned]=@owned,[Principal]=@principal 
  
    SET NOCOUNT OFF  
END  

表格是这样的

它会返回类似的值,

leased = 4,owned = 4,principle = 7

用于在我的前端显示坦克数量的值。

问题是在这里我显示了主要坦克的全部数量并将其返回到我的前端。

现在我在创建数组时遇到了问题,将 Principle Tank 计数作为每个 TCO 的单独计数,我必须将其返回为:

SELECT [Leased]=@leased, [Owned]=@owned, [vibe]=@vibe, [baru]=@baru,[sarath]=@sarath, [karthi]=@karthi, [nth...]=@nth.....

nth 是因为将来可能会出于目的添加 TCO 值,而 selected 值必须返回如下:

租用=4,拥有=4,vibe=2,baru=3,sarath=1,karthi=1,nth= n......,

【问题讨论】:

  • 看起来你真正想要的是一个动态支点。
  • 旁注,sp_ 前缀由 Microsoft 保留,表示S特殊P过程。它不应用作用户对象的前缀。 Is the sp_ prefix still a no-no?
  • 我还删除了 oracle 标签,因为这显然是 SQL Server(由于 dbo 架构)。请不要在提问时随机标记其他 RDBMS。
  • @Larnu 是的,我正在寻找动态支点你有什么例子可以解决这个问题
  • 这个网站上确实有 100 个:Dynamic Pivot SQL Server

标签: sql .net sql-server stored-procedures


【解决方案1】:

表(和结果集)具有固定数量的列和可变数量的行。所以简单地返回

SELECT ownleasetank, COUNT(*) TankCount
FROM Tankdet 
GROUP BY ownleasetank

这将返回每个 ownleasetank 值的一行以及计数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2020-06-17
    • 2016-06-12
    • 2011-02-12
    • 2015-08-10
    • 1970-01-01
    相关资源
    最近更新 更多