2013-05-09 63 views
1

我有3個表被以下::如何與同桌

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 

現在我想在兩個不同的年,在同一個月的不同年份必須僅出現一次,如基礎兩次retreive食品列如下::

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 2013-05-09 08:05:23

+0

Sahu,你已經評論說它對於其中一個答案工作正常。那麼,爲什麼要再次提出這個問題?在這種情況下,您可以在任何情況下使用本產品。 तो,क्योंफिरसवालकेद? – Raj 2013-05-09 08:16:34

+0

@Raj,在前面的問題中,記錄只能找到月份的基礎,但現在我想根據包含相同月份的年份找到記錄。 此外,在上一個問題的查詢中,我將Year替換爲Month,但出現錯誤,即「子查詢返回的值超過1個值,當子查詢遵循=,!=,<,<=,>,> =或子查詢被使用時作爲表達。「 – 2013-05-09 09:06:39

回答

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給我其他解決方案 – 2013-05-09 12:47:00

+0

什麼是不正確的? – 2013-05-10 11:34:45

+0

相同的Anganbadi_ID顯示年份(2013年和2014年)的同一個月(1)的兩個不同的行...並且我已經在我上面的查詢中嘗試了同樣的事情......先生,請爲我的上述請求結果提供代碼。 – 2013-05-10 14:23:31