我查看了其他示例,但我对SQL的了解不足以使其适应我的需求。我有一张看起来像这样的表:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
这可能是单独的查询,但我需要&#39; First&#39;等于使用特定名称的第一个月,因此每个具有fred的行在第一个字段中将具有JAN2013。我需要&#39; Last&#34;列等于每个姓名的最后一个记录的月份,最后我需要总计&#39; column是每个名称的所有计数的总和,因此在fred的每一行中,此示例数据中的总数将为10。这是我的头脑。你们其中一个可以协助吗?
答案 0 :(得分:-1)
这很粗糙,但应该可以解决问题。我重新命名了你的字段,因为你使用了一堆“保留”的sql单词,这是不好的形式。
;WITH cte as
(
Select
[NAME]
,[nmCOUNT]
,ROW_NUMBER() over (partition by NAME order by txtMONTH ASC) as 'FirstMonth'
,ROW_NUMBER() over (partition by NAME order by txtMONTH DESC) as 'LastMonth'
,SUM([nmCOUNT]) as 'TotNameCount'
From Table
Group by NAME, [nmCOUNT]
)
,cteFirst as
(
Select
NAME
,[nmCOUNT]
,[TotNameCount]
,[txtMONTH] as 'ansFirst'
From cte
Where FirstMonth = 1
)
,cteLast as
(
Select
NAME
,[txtMONTH] as 'ansLast'
From cte
Where LastMonth = 1
Select c.NAME, c.nmCount, c.ansFirst, l.ansLast, c.TotNameCount
From cteFirst c
LEFT JOIN cteLast l on c.NAME = l.NAME