sql >> データベース >  >> RDS >> Sqlserver

動的 SQL Server 2005 ピボット

    私は最近、これらの動的クエリをあまりにも多く実行しました... (私の列はクライアントごとに月ごとにシフトします)。これを行う方法の 1 つを次に示します。テストもデバッグも行いません。解決すべきバグがいくつかある可能性があります。

    DECLARE
      @Command     nvarchar(max)
     ,@ColumnList  nvarchar(max)
     ,@OrderId     int
     ,@Debug       bit
    
    
    --  Build a comman-delimited list of the columns
    SELECT @ColumnList = isnull(@ColumnLIst + ',', , '') + ColName
     from dbo.GetTableColumnNames('OrderCash', 2)
    
    
    --  Insert the list of columns in two places in your query
    SET @Command = replace('
    SELECT  OrderID, 
            CurrCode + ‘‘GBP CURNCY’‘ AS Ticker, 
            Cash AS Position 
    FROM 
    ( 
        SELECT OrderID, <@ColumnList>
        FROM OrderCash 
    ) p 
    UNPIVOT 
    ( 
        Cash FOR CurrCode IN  
        (<@ColumnList>) 
    ) AS unpvt 
    WHERE Cash != 0 
    And OrderID = @OrderId
    ', '<@ColumnList>', @ColumnList)
    
    
    --  Always include something like this!
    IF @Debug = 1
        PRINT @Command
    
    --  Using sp_executeSQL over EXECUTE (@Command) allows you execution
    --  plan resuse with parameter passing (this is the part you may need
    --  to debug on a bit, but it will work)
    EXECUTE sp_executeSQL @Command, N'@OrderId int', @OrderId
    



    1. MariaDBでのADDDATE()のしくみ

    2. クエリに基づいてすべての行を配列にフェッチします

    3. 文字データがphpからjqueryに渡されていません

    4. doctrine:schema:updateは列の順序を尊重しません