C# 如何使用同一表中其他列的不同值检索同一列两次

C# 如何使用同一表中其他列的不同值检索同一列两次,c#,asp.net,sql,sql-server,database,C#,Asp.net,Sql,Sql Server,Database,我有以下三张桌子: Anganbadi_ID Month food(2013) food(2014) 1309 1 हाँ नहीं 1309 2 हाँ NULL 1310 1 हाँ NULL 1310 2 हाँ NULL 1310 3

我有以下三张桌子:

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

安干巴迪

现在我想在两个不同年份的基础上检索两次food专栏,其中不同年份的同一个月份只能出现一次,如下所示:

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月食品(2013)食品(2014) 1309 1 हाँ 无效的 1309 2 हाँ 无效的 1310 1 हाँ 无效的 1310 2 हाँ 无效的 1310 3 हाँ 无效的 1311 3 नहीं 无效的 1309 1空नहीं 此处Anganbadi_ID 1309显示了2013年和2014年同一月份(1)的两个不同行

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


这个问题已经在您的最后一个问题上得到了回答,Sahu,您已经评论说,对于其中一个答案,它工作得很好。那么,为什么要再次发布这个问题呢?साहू, आप यह जवाब में से एक के लिए ठीक काम कर रहा है कि टिप्पणी की है. तो, क्यों फिर सवाल के बाद?@Raj,在前面的问题中,记录只以月份为基础,但现在我想以包含相同月份的年份为基础查找记录。同样在上一个问题的查询中,我将年替换为月,但出现了错误,即“子查询返回的值超过1。当子查询后跟=、!=、=或子查询用作表达式时,这是不允许的。”否,它工作不正常。请给我其他解决方案什么是不正确的?相同的Anganbadi_ID显示了同一年(2013年和2014年)同一个月(1)的两个不同行…我已经在我的上述查询中尝试了相同的事情…先生,请给我上述请求结果的代码。先生,请给我一个不使用PIVOT的解决方案,因为我想在两个不同年份的基础上比较表Anganbadi中的所有列,我不知道如何使用PIVOT处理。我看不到任何两个具有相同的
Anganbadi\u ID
MONTH
。这个输出有什么问题? 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 नहीं
 SELECT *
  FROM Anganbadi
  PIVOT
  (
    MAX(food)
    FOR [year] IN([2013],[2014])
   ) AS p
    | 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) |