2010-11-30 60 views
0

這應該是一個相當簡單的。我正在創建一個數據集,該數據集將包含一個我希望排序的描述字段。我想排序dataadapter而不是在我的SQL中的原因是,我已經按具有特定值的結果進行排序。按字母排序DataAdapter - VB.Net

我的SQL是這樣的:

SELECT pif_desc, pif_fund, psf_end, (CASE WHEN SUM(pmi_units) IS Null THEN 0 ELSE SUM(pmi_units) END) As fundunits 
    FROM tbl_mem INNER JOIN tbl_sfunds 
    ON pm_scheme = psf_scheme 
    INNER JOIN tbl_invfun 
    ON tbl_fund = tbl_fund 
    LEFT JOIN pe_minv 
    ON pmi_fund = pif_fund AND pm_member = pmi_member 
    WHERE pm_member = @pm_member 
    GROUP BY pif_desc, pif_fund, psf_end 
    ORDER BY fundunits DESC 

我的VB看起來是這樣的:

Dim cmd As New SqlCommand("getMembersFundsDCGENST", conn) 
     cmd.CommandType = CommandType.StoredProcedure 

     Dim p_pm_member As New SqlParameter("@pm_member", SqlDbType.Int) 
     p_pm_member.Value = pm_member 
     cmd.Parameters.Add(p_pm_member) 

     Dim p_period_closing_date As New SqlParameter("@closingdate", SqlDbType.DateTime) 
     p_period_closing_date.Value = period_closing_date 
     cmd.Parameters.Add(p_closing_date) 

     Dim da As New SqlDataAdapter(cmd) 
     da.Fill(ds) 

我要爲數據行排序是由ds.tables(0)pif_desc,但仍然有行首先將基金單位> 0列出。

我也接受其他關於如何實現正確順序的建議。

回答

1

您正在尋找更多的輸出?

pif_desc fundunits 
ABCDEF  6 
CBCDEG  2 
DEFGHI  4 
ADFKHG  0 
BFJSKL  0 
XDFDKF  0 

如果是的話,試試這個SQL查詢:

SELECT pif_desc, 
     pif_fund, 
     psf_end, 
     (CASE WHEN fundunits IS Null THEN 0 
     ELSE fundunits END) As fundunits, 
     (CASE WHEN fundunits IS Null THEN 0 
     ELSE 1 END) As pif_order 
FROM (
      SELECT pif_desc, 
        pif_fund, 
        psf_end, 
        SUM(pmi_units) As fundunits 
      FROM tbl_mem 
      INNER JOIN tbl_sfunds 
        ON pm_scheme = psf_scheme 
      INNER JOIN tbl_invfun 
        ON tbl_fund = tbl_fund 
      LEFT JOIN pe_minv 
        ON pmi_fund = pif_fund AND pm_member = pmi_member 
      WHERE pm_member = @pm_member 
      GROUP BY pif_desc, pif_fund, psf_end 
     ) pifs 
ORDER BY pif_order,pif_desc 
+0

我曾經試過,但我不希望被責令頂值,但是fundunits,只是他們在的頂部列出列表和按字母順序列出。我想我將不得不製作兩份名單併合並它們。 – TGuimond 2010-11-30 14:10:22