当前位置: 代码迷 >> Sql Server >> 两个SQL有关问题急等
  详细解决方案

两个SQL有关问题急等

热度:43   发布时间:2016-04-24 08:56:47.0
两个SQL问题急等
 
1. 删除人员表中姓名重复的数据,只保留重复数据中的一条数据。十几万行记录要怎么写处理
CREATE TABLE [dbo].[RYB_T1](
[PERSONID] [varchar](64) primary key,
[DepartId] [varchar](64) NULL,
[salary] [float] NULL,
[PersonName] [varchar](64) NULL,
[SEX] [bit] NULL


GO

2.第8题怎么样写,现有代码如下
表结构
月份       借方金额   贷方金额    凭证号     科目名称
--------------------------------------------
一月份      100      0            01        库存现金
一月份     0         90           01        库存现金
一月份      100      0            01        库存现金
一月份      0      110            01        库存现金
一月份      300      0            02        银行存款
一月份      0        300          02        银行存款
二月份      0          0             03       信托投资
三月份      100          0             04      应缴税费

7. 如果要生成下列结果, 该如何写sql语句?
月份       借方金额    贷方金额     凭证号
一月份       200         200          01
一月份       300         300          02
二月份       0             0           03
三月份       100          0            04

8. 如果要生成下列结果, 该如何写sql语句?
月份     库存现金       银行存款           信托投资    应缴税费    总计
一月份     4              2                  0            0         6
二月份     0              0                  1            0          1
三月份     0              0                   0            1         1


CREATE TABLE [dbo].[kmjetj](
[月份] [varchar](64) ,
[借方金额] float NULL,
[贷方金额] float NULL,
[凭证号] [varchar](64) NULL,
[科目名称] [varchar](64) NULL


GO
select * from  kmjetj


insert into kmjetj values('三月份',     100 ,   0   ,     ' 04','应交税费')






------解决思路----------------------
一:
WITH cet AS (
SELECT *,ROW_NUMBER()OVER(PARTITION BY PersonName ORDER BY PersonName)ID FROM RYB_T1 
)
DELETE FROM cet WHERE ID=1

二:
SELECT 月份,SUM(借方金额),SUM(贷方金额),凭证号 FROM TabNmae
GROUP BY 月份,凭证号

同学,作业要自己做啊
------解决思路----------------------
1:select  distinct  PersonName  from  RYB_T1
------解决思路----------------------
第一题错了,应该是WITH cet AS (
SELECT *,ROW_NUMBER()OVER(PARTITION BY PersonName ORDER BY PersonName)ID FROM RYB_T1 
)
DELETE FROM cet WHERE ID>1

第八题
CREATE TABLE #C(
月份      varchar(50),
借方金额  int,
贷方金额 int,
凭证号   varchar(50),
科目名称 varchar(50)
)
INSERT INTO #C
select '一月份',      100 ,     0   ,         01   ,     '库存现金' union all
select '一月份',     0 ,        90  ,         01 ,       '库存现金' union all
select '一月份',      100  ,    0  ,          01  ,      '库存现金' union all
select '一月份'  ,    0     ,110    ,       01 ,    '库存现金' union all
select '一月份',      300  ,    0  ,          02 ,       '银行存款' union all
select '一月份',      0   ,     300  ,        02 ,       '银行存款' union all
select '二月份',      0 ,         0     ,        03  ,     '信托投资' union all
select '三月份',      100,          0  ,           04  ,    '应缴税费'

;WITH cet AS (
SELECT [月份],[科目名称],COUNT(科目名称)ID FROM #C GROUP BY [月份],[科目名称]
)
SELECT [月份],
SUM(CASE WHEN [科目名称]='库存现金' then ID else 0 end  )'库存现金',
SUM(CASE WHEN [科目名称]='信托投资' then ID else 0 end  )'信托投资',
SUM(CASE WHEN [科目名称]='银行存款' then ID else 0 end  )'银行存款',
SUM(CASE WHEN [科目名称]='应缴税费' then ID else 0 end  )'应缴税费'
FROM cet
GROUP BY  [月份]

------解决思路----------------------
忘记汇总了

;WITH cet AS (
SELECT [月份],[科目名称],COUNT(科目名称)ID FROM #C GROUP BY [月份],[科目名称]
)
SELECT [月份],
SUM(CASE WHEN [科目名称]='库存现金' then ID else 0 end  )'库存现金',
SUM(CASE WHEN [科目名称]='信托投资' then ID else 0 end  )'信托投资',
SUM(CASE WHEN [科目名称]='银行存款' then ID else 0 end  )'银行存款',
SUM(CASE WHEN [科目名称]='应缴税费' then ID else 0 end  )'应缴税费',
SUM(ID)AS '总计'
FROM cet
GROUP BY  [月份]
  相关解决方案