如何在一行中组合两个或多个SQL查询的结果?

时间:2016-09-09 13:55:40

标签: sql sql-server-2012

我有一张桌子“BIRTH_ENTRY”& “DEATH_ENTRY”。两者都包含ENTRY_DATE,SEX_ID字段。

SEX_ID = 1 (MALE) & SEX_ID = 2 (FEMALE)

我想算出男性,女性和女性的数量。出生和完成的总(男/女)参赛作品死亡集团&每月订购(入境时间)

e.g。

|Month|Born_Male|Born_Female|Total_Born|Died_Male|Died_Female|Total_Died|
|  1  |
|  2  |
|  3  |
|  4  |
|  5  |
|  6  |
|  7  |
|  8  |
|  9  |
| 10  |
| 11  |
| 12  |

我使用过这个SQL:

SELECT 
    (*Query to select born Male*),
    (*Query to select born Female*),
    (*Query to select total born*),
    (*Query to select died Male*),
    (*Query to select died Female*),
    (*Query to select total died*)

SELECT 
    (SELECT COUNT(SEX_ID) AS Expr1 
     FROM BIRTH_ENTRY 
     WHERE MONTH(ENTRY_DATE) = 1 AND (SEX_ID = 1) 
     GROUP BY MONTH(ENTRY_DATE)) AS Birth_Male_Count,
    (SELECT COUNT(SEX_ID) AS Expr1 
     FROM BIRTH_ENTRY AS BIRTH_ENTRY_1 
     WHERE MONTH(ENTRY_DATE) = 1 AND (SEX_ID = 2) 
     GROUP BY MONTH(ENTRY_DATE)) AS Birth_Female_Count,
    (SELECT COUNT(SEX_ID) AS Expr1 
     FROM BIRTH_ENTRY AS BIRTH_ENTRY_2 
     WHERE MONTH(ENTRY_DATE) = 1 
     GROUP BY MONTH(ENTRY_DATE)) AS Birth_Total_Count,
    (SELECT COUNT(SEX_ID) AS Expr1 
     FROM DEATH_ENTRY 
     WHERE MONTH(ENTRY_DATE) = 1 AND (SEX_ID = 1) 
     GROUP BY MONTH(ENTRY_DATE)) AS Death_Male_Count,
    (SELECT COUNT(SEX_ID) AS Expr1 
     FROM DEATH_ENTRY AS DEATH_ENTRY_1 
     WHERE MONTH(ENTRY_DATE) = 1 AND (SEX_ID = 2) 
     GROUP BY MONTH(ENTRY_DATE)) AS Death_Female_Count,
    (SELECT COUNT(SEX_ID) AS Expr1 
     FROM DEATH_ENTRY AS DEATH_ENTRY_2 
     WHERE MONTH(ENTRY_DATE) = 1 
     GROUP BY MONTH(ENTRY_DATE)) AS Death_Total_Count

但是如您所知,此查询将只返回一行。所以,我要在12个月内写12次。嗯,这还不够好。

所以,请帮助我。

提前致谢!

1 个答案:

答案 0 :(得分:1)

我使用非常小的数据池来使用此查询。您必须对其进行测试,看它是否完全符合您的要求。

我使用的表格式......

$(document).ready(function(){

    /*
        Ця змінна потрібна для перевірки, щоб гарно перевідкривати панель,
        коли користувач переходить на ыншу категорыю при выдкритій панелі.
    */
    var previousCategoryClicked = '';
    var previousGlyphArrow = '';
    var previousCategoryButton = '';

    /*
        Функція, яка керує панелькою меню та контентом в ній
     */
    $('.showMenuCover').click(function(){

        // Виносимо дані з атрибутів тегу в окремі змінні, так простіше в подальшому
        var parentCategory = $(this).attr('parentCategory');
        var parentCategoryButton = '.parentCat'+parentCategory;
        var CategoryID = $(this).attr('category');
        var glyphArrow = '#subCategoryGlyph'+CategoryID;
        var categoryButton = '#categoryButton'+CategoryID;

        // Обчислення висоти елемента li для виставлення адекватних відступів гліфові
        var buttonHeight = $(categoryButton).height();
        if(buttonHeight > 10) {
            var marginGlyph = buttonHeight / 2 - 7;
        }
        else {
            var marginGlyph = buttonHeight / 2 - 2;
        }

        /*
             Далі перевіряємо чи відкрита панель з меню.
             Якщо відкрита, то просто ховаємо її, якщо закрита то відкриваємо її і втягуємо контент через AJAX.
             Перед цим виконуємо додаткову перевірку за допомогою змінної previousCategoryClicked.
             За допомогою неї перевіряємо чи є панель відкрита, якщо користувач клікнув на іншу категорію.
         */
        if(previousCategoryClicked != CategoryID && $('.menu-cover').css('display') == 'block') {

            $('.menu-cover').fadeOut('fast');
            $(previousGlyphArrow).fadeOut('fast');
            $(previousCategoryButton).css('background-color', 'inherit');

            $('.menu-cover').fadeIn('fast');
            $(glyphArrow).fadeIn('fast');
            $(glyphArrow).css('margin-top', marginGlyph);
            $(categoryButton).css('background-color', 'white');
        }
        else {
            if ($('.menu-cover').css('display') == 'none') {
                $('.menu-cover').fadeIn();
                $(glyphArrow).fadeIn();
                $(glyphArrow).css('margin-top', marginGlyph);
                $(categoryButton).css('background-color', 'white');
            }
            else {
                $('.menu-cover').fadeOut();
                $(glyphArrow).fadeOut();
                $(categoryButton).css('background-color', 'inherit');
            }
        }

        previousCategoryClicked = CategoryID;
        previousGlyphArrow = glyphArrow;
        previousCategoryButton = categoryButton;

    });
});

每月显示一次(无论是否有任何内容)。它还会显示您想要的所有信息。