2016-06-10 52 views
1

我正在使用SQL Server 2012,我想通過數據庫查詢來實現此視圖並使用jquery以編程方式顯示它。用於組織數據的SQL Server查詢

預期輸出

enter image description here

電流輸出

enter image description here

這是我當前的查詢:

SELECT [OrganizationName],COUNT([Id]) AS Frequency,[Set] FROM *{table}* GROUP BY [Set],[OrganizationName]; 

我展示使用Ajax表:

$.ajax({ 
      url: '@Url.Action("GetOrganizations", "Companies")', 
      type: 'POST', 
      contentType: 'application/json', 
      data: null, 
      dataType: 'json', 
      success: function (result) { 
       console.log("result length: " + result.length); 
       $("#orgTableDiv").css("max-height", result.length * 15); 
       if (result.length > 0 && result[0].OrganizationName!=null) 
       { 
        var selectOptions = "<option value='All'>All</option>"; // dropdown containing all organizations 
        $("#orgTable").empty(); 
        var div = ""; 

        div = "<tr>" + 
          "<th>No</th>" + 
          "<th>Organization Name</th>"; 

        for (var i=0; i<data.length ; i++) { 
         div += "<th>"+data[i]["name"]+"</th>"; 
        } 

        div += "</tr>"; 
        $("#orgTable").append(div); 

        var numOfSets = data.length; 
        var organizationName = ""; 
        var counter = 1; 

        for (var i = 0; i < result.length; i++) { 

         var row = "<tr>" + 
             "<td>" + counter + "</td>" + 
             "<td>" + result[i].OrganizationName + "</td>"; 
         if (result[i].SetValue!=null) 
          for (var j=0; j < result[i].SetValue.length; j++) { 
           var setData = result[i].SetValue[j].split(':'); 

           for (var m=0; m<setData.length; m++) { 
            var temp = setData; 
           } 

           var setNum = setData[0]; 
           var setFrequency = setData[1]; 

           for (var c=1; c<=numOfSets; c++) { 
            if (c==setNum) 
             row += "<td>" + setFrequency + "</td>"; 

           } 
          } 
         counter++; 
         row += "</tr>"; 

         $("#orgTable").append(row); 
         selectOptions +="<option value='" + result[i].OrganizationName+ "'>" + result[i].OrganizationName+ "</option>"; 
        } 

        $('#organizationOption').empty().append(selectOptions); 
       } 

      }, 
      error: function (result) { 
       alert('Error: ' + result); 
      } 
     }) 

我怎樣才能達到預期的輸出?我目前堅持我的實施。

回答

2
SELECT [OrganizationName], 
Sum(case when set = 1 then 1 else 0 end) as set1, 
Sum(case when set = 2 then 1 else 0 end) as set2, 
Sum(case when set = 3 then 1 else 0 end) as set3, 
Sum(case when set = 4 then 1 else 0 end) as set4, 

FROM *{table}* GROUP BY [OrganizationName]; 

上述查詢會給你所需的輸出

+0

Akshey,頻率不是表的一部分。它是特定組織的所有條目的計數 – Awoi

+0

修改後的答案檢查請 –

+0

順便說一下,根據Set列中的值,設置的編號可能會有所不同。有沒有辦法讓這種動態? – Awoi

1
select * 
    from 
    (
     select OrganizationName, set, Frequency 
     from Tablename 
    ) src 
    pivot 
    (
     sum(Frequency) 
     for set in ([1], [2], [3],[4]) 
    ) piv; 
+0

這對我不起作用 – Awoi

+0

可以請你分享一下詳情嗎?或者什麼不適合你 –