zoukankan      html  css  js  c++  java
  • 实现数据行转列(数据库必须最低兼容90以上)

    实现数据行转列(数据库必须最低兼容90以上)

    DECLARE @SQLText NVARCHAR(4000)
    SET @SQLText = ''

    DECLARE @ResultColumn_Char VARCHAR(8000)
    SET @ResultColumn_Char = ''

    DECLARE @ResultColumn TABLE
    (
    SerialNo INT IDENTITY ,
    ResultColumn VARCHAR(255)
    )
    INSERT INTO @ResultColumn
    ( ResultColumn )
    SELECT DISTINCT ParameterName
    FROM dbo.tb_ChargeBalanceDetail
    WHERE OperationID = 'Charge_Clinic'

    DECLARE @iCounter INT
    DECLARE @iCounter_max INT
    SELECT @iCounter = MIN(SerialNo),@iCounter_max = MAX(SerialNo) FROM @ResultColumn
    WHILE @iCounter <= @iCounter_max BEGIN
    SELECT @ResultColumn_Char = @ResultColumn_Char + CASE WHEN RTRIM(@ResultColumn_Char) <> '' THEN + ',' ELSE '' END + '[' + ResultColumn + ']' FROM @ResultColumn WHERE SerialNo = @iCounter
    SET @iCounter = @iCounter + 1
    END

    SET @SQLtext ='
    SELECT *
    FROM
    (SELECT ChargeBillID,ParameterName,ParameterValue
    FROM tb_ChargeBalanceDetail WHERE OperationID = ''Charge_Clinic'') p
    PIVOT
    (
    SUM(p.ParameterValue)
    FOR ParameterName IN
    ( ' + @ResultColumn_Char +
    ') AS pvt
    '

    SELECT @SQLText

    --EXEC (@SQLText)


    数据行合并列

    SELECT HospitalID,DiagnosisName = STUFF((SELECT ',' + DiagnosisName FROM dbo.tb_EMR_TRD_DiagnosticRecordsInFormation WHERE HospitalID = T1.HospitalID FOR XML PATH('')),1,1,'')
    FROM dbo.tb_EMR_TRD_DiagnosticRecordsInFormation AS T1

  • 相关阅读:
    javascript延迟对象
    Fetch-新一代Ajax API
    AJAX笔记
    VR/AR/MR
    为什么Javascript有设计缺陷
    Javascript函数式编程
    vim基本操作
    Git 常用命令(二)
    SSH配置
    C# NPOI导出Excel和EPPlus导出Excel
  • 原文地址:https://www.cnblogs.com/tanhu/p/7124650.html
Copyright © 2011-2022 走看看