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_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 月食(2013) 食(2014)
第1309章 1个
第1309章 2天
第1310章 1个
第1310章 2天
第1310章 3点
第1311章 3天
第1309章 1空

这里 Anganbadi_ID 1309 显示同一月份 (1 ) 年份 (2013 和 2014) 的两个不同行

4

1 回答 1

0

Try this :

 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) |
于 2013-05-09T10:49:52.963 回答