2013-05-09 4 views
1

у меня есть 3 таблицы, которые следующие ::Как получить тот же столбец в два раза с разными значениями другого столбца в одной таблице

Village

Village_ID  Village_Name 

446261   परसठ्ठी 
446262   बम्हनी 
446263   लाफिनखुर्द 
446264   सोरम 
446265    सिधीं 

Anganbadi_Master

Anganbadi_ID  Anganbadi_Name  Village_ID 
    1307   चिंगरौद    446260 
    1308   चिगरौद-2   446260 
    1309   बम्हनी-1   446262 
    1310   बम्हनी-2   446262 
    1311   बम्हनी-3   446262 
    1312   लाफिनखुर्द-1   446263 
    1313   लाफिनखुर्द-2   446263 

Anganbadi

Anganbadi_ID Food Month  Year 
    1179  हाँ  5  2013 
    1309  हाँ  1  2013 
    1309  नहीं  1  2014 
    1309  हाँ  2  2013 
    1310  हाँ  1  2013 
    1310  हाँ  2  2013 
    1310  हाँ  3  2013 
    1311  नहीं  3  2013 
    2032  हाँ  3  2013 

Теперь я хочу, чтобы извлечь столбец пищи дважды в основе двух разных лет, где в том же месяце в разные годы должны появиться только один раз, как следующее ::

Anganbadi_ID Month food(2013) food(2014) 
1309    1   हाँ  नहीं 
1309    2   हाँ  NULL 
1310    1   हाँ  NULL 
1310    2   हाँ  NULL 
1310    3   हाँ  NULL 
1311    3   नहीं  NULL 

Но, когда я м пытается этот код

SELECT DISTINCT Anganbadi.Anganbadi_ID 
     , Anganbadi.Month 
     , Anganbadi.Food AS food2013 
     , NULL   AS Food2014 
    FROM Anganbadi 
     INNER JOIN Anganbadi_Master ON Anganbadi.Anganbadi_ID = Anganbadi_Master.Anganbadi_ID 
     INNER JOIN Village ON Anganbadi_Master.Village_ID = Village.Village_ID 
WHERE (Anganbadi.Year = 2013) 
    AND (Anganbadi_Master.Village_ID = 446262) 
UNION ALL 
SELECT Anganbadi_1.Anganbadi_ID 
     , Anganbadi_1.Month 
     , NULL      AS food2013 
     , Anganbadi_1.Food   AS Food2014 
    FROM Anganbadi     AS Anganbadi_1 
     INNER JOIN Anganbadi_Master AS Anganbadi_Master_1 ON Anganbadi_1.Anganbadi_ID = 
      Anganbadi_Master_1.Anganbadi_ID 
     INNER JOIN Village   AS Village_1 ON Anganbadi_Master_1.Village_ID = 
      Village_1.Village_ID 
WHERE (Anganbadi_1.Year = 2014) 
    AND (Anganbadi_Master_1.Village_ID = 446262) 


Он показывает следующие результаты ::

 
Anganbadi_ID Month food(2013) food(2014) 
1309    1   हाँ  NULL 
1309    2   हाँ  NULL 
1310    1   हाँ  NULL 
1310    2   हाँ  NULL 
1310    3   हाँ  NULL 
1311    3   नहीं  NULL 
1309    1   NULL  नहीं 

здесь Anganbadi_ID 1309 показаны две разные строки для того же месяца (1) в течение года (2013 и 2014)

+2

Вопрос уже ответили на ваш последний вопрос http://stackoverflow.com/questions/16423883/how-to-retrieve-same-column-twice-with-different-conditions-in-same -table – bummi

+0

Sahu, вы прокомментировали, что он отлично работает для одного из ответов. Итак, зачем ставить вопрос снова? साहू, आप यह जवाब में से एक के लिए ठीक काम कर रहा है कि टिप्पणी की की. तो, क्यों फिर सवाल के बाद? – Raj

+0

@Raj. В предыдущем вопросе записи находились только в основе месяца, но теперь я хочу найти записи в основе Years, который содержит те же месяцы. Также в запросе предыдущего вопроса я заменил год вместо месяца, но произошла ошибка, т. Е. «Подзапрос вернул более 1 значения. Это недопустимо, когда подзапрос следует за =,! =, <,<=,>,> = или когда используется подзапрос как выражение ». –

ответ

0

Попробуйте это:

SELECT * 
    FROM Anganbadi 
    PIVOT 
    (
    MAX(food) 
    FOR [year] IN([2013],[2014]) 
    ) AS p 

SQL Fiddle

| ANGANBADI_ID | MONTH | 2013 | 2014 | 
---------------------------------------- 
|   1309 |  1 | हाँ | नहीं | 
|   1310 |  1 | हाँ | (null) | 
|   1309 |  2 | हाँ | (null) | 
|   1310 |  2 | हाँ | (null) | 
|   1310 |  3 | हाँ | (null) | 
|   1311 |  3 | नहीं | (null) | 
|   2032 |  3 | हाँ | (null) | 
|   1179 |  5 | हाँ | (null) | 
+0

Нет, он работает неправильно. Plz дайте мне другое решение –

+0

Неправильное? –

+0

Same Anganbadi_ID показывает две разные строки за тот же месяц (1) за год (2013 и 2014) ... и я уже пробовал то же самое в моем предыдущем запросе .... Сэр, пожалуйста, дайте мне код для моего вышеизложенного результата. –

Смежные вопросы